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

By | 03月02日
Advertisement

单向加密,简单地说就是对数据进行哈希处理,平时我们见得较多的有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控件上显示。

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

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

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

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

Similar Posts:

  • iOS&amp;Java常用加密(二)单向加密

    单向加密就是用同一个密钥去加密和解密. 一.AES 支持密钥128位,192位,256位(常用的是128位 md5, 256位 sha256) 算法/工作模式/填充方式的概念: 算法是:AES 工作模式:ECB/CBC 默认情况下iOS是CBC的,我提供的例子是ECB的的工作模式,所以iOS在设置加密参数的时候要添加参数 kCCOptionECBMode 填充方式:kCCOptionPKCS7Padding iOS似乎只支持这样的填充方式,java有很多填充方式,但是就不支持这个,所以要引用第三

  • 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加密技术--单向加密算法和双向对称/非对称算法

    加密解密,曾经是我一个毕业设计的重要组件.在工作了多年以后回想当时那个加密.解密算法,实在是太单纯了. 言归正传,这里我们主要描述Java已经实现的一些加密解密算法,最后介绍数字证书. 如基本的单向加密算法: BASE64 严格地说,属于编码格式,而非加密算法 MD5(Message Digest algorithm 5,信息摘要算法) SHA(Secure Hash Algorithm,安全散列算法) HMAC(Hash Message Authentication Code,散列消息鉴别码)

  • Android SO文件保护加固——加密篇(二)

    已经很长一段时间没更新了,一方面本人技术一般,不知道能给技术网友分享点什么有价值的东西,一方面,有时候实验室事比较多,时间长了就分享的意识就单薄了,今天接着前面那个so文件重要函数段加密,接着更,接下来开始书写. 一.原理篇 在很多时候我们对一个.so文件中重要的函数段加密时,是无法拿到源码的,当然并不排除可能在以后随着Android开发与安全结合,出现逆向开发者,在开发的时候就进行一些重要的函数的保护,在上一篇中是对特定的section的加密,加密就可以根据section来进行查找加密不需要源

  • 软件加密篇

    密码攻防实战:软件加密篇 Win9x下的加密隐藏软件不少,如Encrypted Magic Folders.Magic Folders.Folders.Guard.protectZ等,都可以用隐藏甚至加密目录.可选择的种类多了,反倒是没有办法选择了,我这里为你推荐两种软件,一种使用简单,另一种功能强大. 1.protectZ 完成安装后,它首先会提醒你重新启动电脑.这是因为protectZ对注册表进行了一些必要的修改,在重新启动系统后才能生效. 第一次运行protectZ时必须先设置口令.你可以

  • 再谈软件保护中软加密和硬加密的安全强度

    前言 大家知道,在软件保护技术中一般存在两种主要的保护方式:不需要额外的硬件设备,完全由软件实现的方式和使用硬件加密锁的方式.往往前者被称作"软加密"方式:而后者被称作"硬加密"方式.普遍认为,硬加密方式的安全强度要大于软加密方式.事实真的如此吗? 我们从常用的解密方法入手,具体分析和比较一下软加密与硬加密的安全性. 一.软件解密方法 如同软件加密的方式千差万别,软件解密的办法也多种多样.但从根本上,无外乎三种主要手段: 逆向工程:采用软件代码分析和跟踪的方法,找到

  • 安全HTTPS-全面详解对称加密,非对称加密,数字签名,数字证书和HTTPS【下】

    1. HTTPS 1.1. 什么是HTTPS HTTPS(HypertextTransfer Protocol Secure)即安全的HTTP.HTTPS的安全基础是安全套接层(Secure Sockets Layer,SSL).HTTP工作在应用层(OSI模型的最高层),SSL协议工作在一个较低的子层,位于TCP/IP协议和HTTP协议之间.在HTTP报文传输前对其加密,并在到达时对其解密.严格地讲,HTTPS并不是一个单独的协议,而是工作在SSL协议上的HTTP协议. TLS对SSL进行了扩

  • 实例比较 详细了解加密狗的加密原理

    实例比较 详细了解加密狗的加密原理 http://security.ccidnet.com/art/234/20070428/1073071_1.html 在当今中国市场上最主要的加密锁品牌有: 1.美国彩虹公司(也是最早做硬件加密的公司)的国产品牌"加密狗".美国品牌"圣天诺软件加密锁": 2.阿拉丁的"HASP"系列加密锁: 3.德国威博公司的"WBU-KEY"加密锁: 4.深思洛克的"深思加密锁":

  • 对称加密和非对称加密介绍和区别

    什么是对称加密技术? 对称加密采用了对称密码编码技术,它的特点是文件加密和解密使用相同的密钥,即加密密钥也可以用作解密密钥,这种方法在密码学中叫做对称加密算法,对称加密算法使用起来简单快捷,密钥较短,且破译困难,除了数据加密标准(DES),另一个对称密钥加密系统是国际数据加密算法(IDEA),它比DES的加密性好,而且对计算机功能要求也没有那么高.IDEA加密标准由 PGP(Pretty Good Privacy)系统使用. 对称加密算法在电子商务交易过程中存在几个问题: 1.要求提供一条安全的

  • 圣天狗优秀的加密方案-软件加密技巧-加密工程师必读

    概要 ◎设计优秀的加密方案 ◎简单而有效的加密技巧 ◎进一步提高加密强度 ◎通过"软硬兼施",降低加密成本 ◎通过软件授权,实现多种销售模式 我们需要防御什么 驱动程序替换 这种攻击手段会替换/仿真应用程序用于与保护锁通信的驱动程序(基于软件) 通讯层模拟/仿真 在重放类攻击中,黑客会监视并复制硬件保护锁与应用程序之间的通信数据,通过重现通信过程来访问应用程序. 暴力攻击 暴力攻击是一种查找密码的手段,其特点就是不断尝试每种可能的字母.数字和符号组合,直到找出正确的组合. 逆向工程 逆

Tags: