前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >win10 UWP 使用 MD5算法

win10 UWP 使用 MD5算法

作者头像
林德熙
发布2018-09-18 15:55:35
6060
发布2018-09-18 15:55:35
举报
文章被收录于专栏:林德熙的博客林德熙的博客

在我们的应用需求很常见的,我们需要使用md5算法。 uwp的 md5 和 WPF 的使用差不多。

在 WPF ,我们使用

代码语言:javascript
复制
        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使用很简单

首先添加在类的最前,让我们打的时候减少一些。

代码语言:javascript
复制
using Windows.Security.Cryptography;
using Windows.Security.Cryptography.Core;
using Windows.Storage.Streams;

然后把输入的字符串转为 md5 需要的二进制,注意编码。

代码语言:javascript
复制
            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

代码语言:javascript
复制
Windows.Security.Cryptography.CryptographicBuffer.EncodeToBase64String(buffHash1);

那么如何转为 Hex ?

代码语言:javascript
复制
CryptographicBuffer.EncodeToHexString(buffHash1);

下面写出代码,测试通过,在站长工具转换结果一样

代码语言:javascript
复制
        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());
        }

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档