【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

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值