# win10 UWP 使用 MD5算法
在我们的应用需求很常见的,我们需要使用md5算法。
uwp的 md5 和 WPF 的使用差不多。
<!--more-->
<div id="toc"></div>
在 WPF ,我们使用
```csharp
private string get_MD5(string str)
{
System.Security.Cryptography.MD5CryptoServiceProvider md5 = new System.Security.Cryptography.MD5CryptoServiceProvider();
byte[] temp;
StringBuilder strb = new StringBuilder();
temp = md5.ComputeHash(Encoding.Unicode.GetBytes(str));
md5.Clear();
for (int i = 0; i < temp.Length; i++)
{
strb.Append(temp[i].ToString("X").PadLeft(2 , '0'));
}
return strb.ToString().ToLower();
}
```
然而在 UWP ,没有`System.Security.Cryptography.MD5CryptoServiceProvider`,新的加密类放在`Windows.Security.Cryptography.Core.CryptographicHash`
UWP 的 md5使用很简单
首先添加在类的最前,让我们打的时候减少一些。
```csharp
using Windows.Security.Cryptography;
using Windows.Security.Cryptography.Core;
using Windows.Storage.Streams;
```
然后把输入的字符串转为 md5 需要的二进制,注意编码。
```csharp
Windows.Security.Cryptography.Core.HashAlgorithmProvider objAlgProv = Windows.Security.Cryptography.Core.HashAlgorithmProvider.OpenAlgorithm(Windows.Security.Cryptography.Core.HashAlgorithmNames.Md5);
Windows.Security.Cryptography.Core.CryptographicHash md5 = objAlgProv.CreateHash();
Windows.Storage.Streams.IBuffer buffMsg1 = Windows.Security.Cryptography.CryptographicBuffer.ConvertStringToBinary(str , Windows.Security.Cryptography.BinaryStringEncoding.Utf16BE);
md5.Append(buffMsg1);
Windows.Storage.Streams.IBuffer buffHash1 = md5.GetValueAndReset();
```
`buffHash1`就是转换后的二进制,我们可以把它转为 base64 或 Hex
网上很多都是 Hex ,基本看到 md5 就是二进制转 Hex, Hex 就是16进制。
我们先说下如何转为 Base64
```csharp
Windows.Security.Cryptography.CryptographicBuffer.EncodeToBase64String(buffHash1);
```
那么如何转为 Hex ?
```csharp
CryptographicBuffer.EncodeToHexString(buffHash1);
```
下面写出代码,测试通过,在站长工具转换结果一样
```csharp
public static string Md5(string str)
{
HashAlgorithmProvider algorithm = HashAlgorithmProvider.OpenAlgorithm(HashAlgorithmNames.Md5);
CryptographicHash md5 = algorithm.CreateHash();
Windows.Storage.Streams.IBuffer buffer = CryptographicBuffer.ConvertStringToBinary(str, BinaryStringEncoding.Utf16BE);
md5.Append(buffer);
return CryptographicBuffer.EncodeToHexString(md5.GetValueAndReset());
}
```
<script src="https://gist.github.com/lindexi/0ecf1d8de7a222cda5f058e74de335c1.js"></script>
<a rel="license" href="http://creativecommons.org/licenses/by-nc-sa/4.0/"><img alt="知识共享许可协议" style="border-width:0" src="https://licensebuttons.net/l/by-nc-sa/4.0/88x31.png" /></a><br />本作品采用<a rel="license" href="http://creativecommons.org/licenses/by-nc-sa/4.0/">知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议</a>进行许可。欢迎转载、使用、重新发布,但务必保留文章署名[林德熙](http://blog.csdn.net/lindexi_gd)(包含链接:http://blog.csdn.net/lindexi_gd ),不得用于商业目的,基于本文修改后的作品务必以相同的许可发布。如有任何疑问,请与我[联系](mailto:lindexi_gd@163.com)。
- Introduction
- 控件
- Win10 UWP Intro to controls and events
- win10 UWP Controls by function
- win10 uwp App-to-app communication 应用通信
- win10 UWP 使用MD5算法
- win10 UWP 全屏
- win10 uwp 使用油墨输入
- 三种方式设置特定设备UWP XAML view
- win10 uwp iot
- win10 uwp 活动磁贴
- win 10 UWP 标签
- Xamarin Forms 进度条控件
- win10 UWP MessageDialog 和 ContentDialog
- win10 uwp 俄罗斯方块
- win10 UWP Hmac
- win10 UWP 单元测试
- win10 uwp 判断文件存在
- win10 UWP 标题栏后退
- win10 uwp 分治法
- win10 UWP 应用设置
- win10 uwp BadgeLogo 颜色
- win10 uwp json
- win10 uwp Window.Current.Dispatcher中Current为null
- win10 uwp 无法附加到CoreCLR
- win10 uwp 自定义控件 SplitViewItem
- win10 uwp ContentDialog 点确定不关闭
- win10 uwp smms图床
- win10 uwp 从StorageFile获取文件大小
- win10 uwp 如何让WebView标识win10手机
- win10 uwp 上传Nuget
- win10 uwp 手动锁Bitlocker
- win10 uwp 圆角按钮
- win10 uwp 入门
- win10 uwp 切换主题
- win10 uwp 随着数字变化颜色控件
- win10 uwp 设置启动窗口大小 获取窗口大小
- win10 uwp 简单MasterDetail
- win10 uwp 异步进度条
- win10 uwp 访问解决方案文件
- C# 7.0
- win10 uwp InkCanvas控件数据绑定
- win10 uwp 列表模板选择器
- win10 uwp 隐藏实时可视化
- win10 uwp 读取文本ASCII错误
- Visual studio 创建项目失败vstemplate
- Visual Studio 自定义项目模板
- win10 uwp 车表盘 径向规
- win10 uwp 截图 获取屏幕显示界面保存图片
- win10 uwp 获得焦点改变
- win10 uwp 应用转后台清理内存
- win10 uwp 隐私声明
- win10 uwp 打包第三方字体到应用
- win10 uwp 九幽图床
- win10 uwp 兴趣线
- win10 uwp 右击浮出窗在点击位置
- win10 uwp 保存用户选择文件夹
- win10 uwp 打电话
- visual studio 2015 warning MSB3246
- win10 uwp 绘图 Line 控件使用
- win10 uwp 存放网络图片到本地
- win10 uwp 判断本地ip
- win10 uwp 弹起键盘不隐藏界面元素
- win10 uwp Markdown
- C# 设计模式 责任链
- win10 uwp 显示SVG
- win10 uwp 网络编程
- win10 uwp HttpClient post错误
- win10 uwp win2d
- win10 uwp 布局
- win10 uwp 初始屏幕
- win10 uwp dataGrid
- win10 uwp 魔力鬼畜
- win10 uwp如何使用DataTemplate
- win10 uwp 多语言
- win10 uwp CSDN阅读 源代码
- win10 uwp 语音
- win10 uwp 动画
- win10 uwp 颜色转换
- win10 uwp 获得Slider拖动结束的值
- Windows 10「设置」应用完整MS-Settings快捷方式汇总
- win10 uwp 用广告赚钱
- win10 uwp 快捷键
- win10 UWP MvvmLight入门
- win10 uwp 标题栏
- win10 uwp 从Type 使用构造
- win10 uwp ImageSourece 和Byte[] 相互转换
- win10 uwp 验证TextBox
- C# 使用Emit深克隆