【WP开发】加密篇:单向加密

单向加密,简单地说就是对数据进行哈希处理,平时我们见得较多的有MD5、SHA1等,都属于单向加密。上一篇文章中,老周跟大家扯了有关双向加密的事,本文咱们就扯一下单向加密吧。

要对数据进行哈希处理也不是很复杂,应该说挺easy的。与双向加密的处理有着相同的规律。

要进行哈希运算,你应该:

1、调用HashAlgorithmProvider类的OpenAlgorithm()方法产生一个HashAlgorithmProvider实例。OpenAlgorithm方法是公共静态的,可以直接调用,参数是一个字符串,即哈希算法的名字,同样地,这个名字也不用我们去记忆,它由HashAlgorithmNames类的静态属性列表直接公开,调用OpenAlgorithm方法时,按实际需要直接套“公式”就可以了。

2、得到HashAlgorithmProvider实例后,它会公开一个名为HashData的方法,调用它就可以得到数据的哈希值了。

好了,为了节约口水资源,下面给大家演示一个例子。该例子将输入的字符串进行哈希处理。

关于界面,请欣赏下面的XAML代码:

    <StackPanel>
        <TextBox Name="txtInput" Header="输入内容:"/>
        <ComboBox Header="选择算法:" Name="cmbHash">
            <ComboBoxItem IsSelected="True">MD5</ComboBoxItem>
            <ComboBoxItem>SHA1</ComboBoxItem>
        </ComboBox>
        <Button Content="加密" Click="OnHash"/>
        <TextBox Name="txtOutput" Header="计算结果:" IsReadOnly="True" TextWrapping="Wrap"/>
    </StackPanel>

用到一个ComboBox控件,用来选择使用MD5还是SHA1算法来进行处理。下面代码将处理按钮的Click事件:

        private void OnHash(object sender, RoutedEventArgs e)
        {
            // 将字符串转换为二进制缓冲区
            IBuffer bfstr = CryptographicBuffer.ConvertStringToBinary(txtInput.Text, BinaryStringEncoding.Utf8);
            // 确定算法类型
            string hashtype = null;
            int index = this.cmbHash.SelectedIndex;
            if (index == 0)
            {
                // Md5
                hashtype = HashAlgorithmNames.Md5;
            }
            else
            {
                // Sha1
                hashtype = HashAlgorithmNames.Sha1;
            }
            // 即将进行运算
            HashAlgorithmProvider hashprd = HashAlgorithmProvider.OpenAlgorithm(hashtype);
            IBuffer result = hashprd.HashData(bfstr);
            // 如果计算结果的字节长度与算法所要求的长度不等
            // 则说明计算不正确,就不做处理
            if (result.Length == hashprd.HashLength)
            {
                // 将结果转化为十六进制字符串
                txtOutput.Text = CryptographicBuffer.EncodeToHexString(result);
            }
        }

在代码的最后,为了让计算结果能以最常见的十六进制字符串的形式出现,就用CryptographicBuffer.EncodeToHexString方法把字节缓冲区中的数据变为字符串,以便在TextBlock控件上显示。

得到的运行结果请看下图。

好,正好吃饭时间快到,就此打住。下一篇文章就向大家介绍一下如果在经过网络传输的数据间进行加密和解密。

示例代码下载:http://files.cnblogs.com/files/tcjiaan/HashApp.zip

时间: 2024-12-27 19:03:30

【WP开发】加密篇:单向加密的相关文章

加密的类型及其相关算法--单向加密

上一节我们讲到对称加密能解决通讯机密性的问题,可是无法保证信息的完整性. 那我们引入一种算法--单向加密.单向加密就如人的指纹,会独一无二. A向B传递信息的时候会在末尾附加这个信息的单向加密结果,B接收到以后用同样的单向加密算法,计算加密的结果与传递过来的密码对比.如果一致,证明信息是完整的. 那么单向加密需要有什么特性呢? 1.输入的一样,计算结果必定是一样 2.雪崩效应,一点点的不同,就会导致计算结果完全不同 3.定长输出,无论原信息的大小,输出的结果长度必定一致 4.不可逆,不可以通过结

【WP开发】加密篇:双向加密

说起双向加密,如果以前在.NET开发中弄过加/解密的朋友都不会陌生,常用的算法有DES.AES等.在RT应用程序中,也提供了加密相关的API,算法自然是一样的,只是API的封装方式不同罢了,因为RT不完全是托管代码,而又类似于COM的形式公开,这对于低端设备来说,性能可以提升,当然了,对于高端设备来说无所谓. 在WP的RT应用中,涉及到加/解密的API都在以下几个命名空间里,大家要用的就在里面找,也不是所有类都会用得上,加密一般就用两大类:需要恢复内容时选用双向加密,如DES.AES等算法:如果

WP开发笔记——字符串 转 MD5 加密

将字符串进行MD5加密,返回加密后的字符串. 从这里下载Md5.cs文件:http://pan.baidu.com/s/1hq3gpnu. 添加到Windows Phone 7项目中,在代码里面这样调用: 1 String strPassword = "password"; 2 String strPasswordMD5 = JeffWilcox.Utilities.Silverlight.MD5.GetMd5String(strPassword); 3 MessageBox.Show

java加密算法入门(一)-算法概念及单向加密

说起加密,我的第一印象就是电视剧各种密码本破解解密的场景,这两天在看加密相关的东西,做下笔记以便以后查看,也提供给大家个参考. 本文是java加密的第一篇,主要讲述下消息编码Base64以及简单的消息摘要算法MD5,SHA,MAC等,如果有不对的地方还望大家指正. 1.算法概念简述 1.1.加密算法分类 消息编码:Base64 消息摘要:MD类,SHA类,MAC 对称加密:DES,3DES,AES 非对称加密:RSA,DH密钥交换 数字签名:RSA signature,DSA signature

数字签名、数字证书、对称加密算法、非对称加密算法、单向加密(散列算法)

数字签名是什么? 1. 鲍勃有两把钥匙,一把是公钥,另一把是私钥. 2. 鲍勃把公钥送给他的朋友们----帕蒂.道格.苏珊----每人一把. 3. 苏珊给鲍勃写信,写完后用鲍勃的公钥加密,达到保密的效果. 4. 鲍勃收信后,用私钥解密,看到信件内容. 5. 鲍勃给苏珊回信,写完后用Hash函数,生成信件的摘要(digest). 6. 然后,鲍勃使用私钥,对这个摘要加密,生成"数字签名"(signature). 7. 鲍勃将这个签名,附在信件下面,一起发给苏珊. 8. 苏珊收信后,取下数

单向加密 对称加密 非对称加密

单向加密: 单向加密又称为不可逆加密算法,在加密过程中不使用密钥,明文由系统加密处理成密文,密文无法解密.一般适合于验证,在验证过程中,重新输入明文,并经过同样的加密算法处理,得到相同的密文并被系统重新认证.广泛使用于口令加密. 一:base64 常见于邮件.http加密,截取http信息,你就会发现登录操作的用户名.密码字段通过BASE64加密的. 主要就是BASE64Encoder.BASE64Decoder两个类 BASE加密后产生的字节位数是8的倍数,如果不够位数以=符号填充 二:md5

各开发语言的程序加密方法(一)

从各个开发语言出发,对每个开发语言的角度对加密方法做一些阐述.这篇主要讲述lua.erlang.perl.ruby语言的加密方法. 加密所需: Virbox LM SDK 最新版Virbox Protector 加壳工具,DS Protector 文档下载:http://dl.video.virbox.com/video/VirboxLM-other.zip 1.  lua 安装版本: 5.3.4 1. 安装完成之后命令行中输入lua ,若出现版本号则表示安装成功 2. 若提示不是内部命令,需要

那些年做过的ctf之加密篇(加强版)

MarkdownPad Document html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,big,cite,code,del,dfn,em,img,ins,kbd,q,s,samp,small,strike,strong,sub,sup,tt,var,b,u,i,center,dl,dt,dd,ol,ul,li,fieldset,form,label

那些年做过的ctf之加密篇

最近ctf做的比较多,顺便整理一下做个笔记,大概有加密篇.隐写篇.逆向破解和web方向的几篇文章,整理出来之后会陆续发出来. Base64: ZXZhbCgkX1BPU1RbcDRuOV96MV96aDNuOV9qMXVfU2gxX0oxM10p NTU2NJC3ODHHYWJIZ3P4ZWY= Base64编码要求把3个8位字节(3*8=24)转化为4个6位的字节(4*6=24),之后在6位的前面补两个0,形成8位一个字节的形式. 如果剩下的字符不足3个字节,则用0填充,输出字符使用'=',因