【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控件上显示。
得到的运行结果请看下图。
好,正好吃饭时间快到,就此打住。下一篇文章就向大家介绍一下如果在经过网络传输的数据间进行加密和解密。
示例代码下载:https://files.cnblogs.com/files/tcjiaan/HashApp.zip
相关文章
- 金融服务领域的大数据:即时分析
- 影响大数据、机器学习和人工智能未来发展的8个因素
- 从0开始构建一个属于你自己的PHP框架
- 如何将Hadoop集成到工作流程中?这6个优秀实践必看
- SEO公司使用大数据优化其模型的5种方法
- 关于Web Workers你需要了解的七件事
- 深入理解HTTPS原理、过程与实践
- 增强分析:数据和分析的未来
- PHP协程实现过程详解
- AI专家:大数据知识图谱——实战经验总结
- 关于PHP的错误机制总结
- 利用数据分析量化协同过滤算法的两大常见难题
- 怎么做大数据工作流调度系统?大厂架构师一语点破!
- 2019大数据处理必备的十大工具,从Linux到架构师必修
- OpenCV中的KMeans算法介绍与应用
- 教大家如果搭建一套phpstorm+wamp+xdebug调试PHP的环境
- CentOS下三种PHP拓展安装方法
- Go语言HTTP Server源码分析
- Go语言HTTP Server源码分析
- 2017年4月编程语言排行榜:Hack首次进入前五十