首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SHA1Managed UWP (C#)

SHA1Managed UWP (C#)
EN

Stack Overflow用户
提问于 2016-08-11 13:15:06
回答 2查看 688关注 0票数 1

我为UWP编写应用程序

我有密码

代码语言:javascript
复制
 private string Hash(string input)
 {
     using (SHA1Managed sha1 = new SHA1Managed())
     {
         var hash = sha1.ComputeHash(Encoding.UTF8.GetBytes(input));
         var sb = new StringBuilder(hash.Length * 2);

         foreach (byte b in hash)
         {
             // can be "x2" if you want lowercase
             sb.Append(b.ToString("X2"));
         }

         return sb.ToString();
     }
}

但是它不起作用,并且显示了这个错误。

严重程度代码描述项目文件行抑制状态错误无法找到类型或命名空间名称'SHA1Managed‘(您是缺少一个使用指令还是程序集引用?)米兰C:\Users\nemes\Documents\GitHub\Milano_pizza\Milano\WoocommerceApiClient.cs 25活动

我怎么才能解决这个问题?

EN

回答 2

Stack Overflow用户

发布于 2016-08-11 16:04:15

对于UWP,使用HashAlgorithmProvider

代码语言:javascript
复制
    public string Hash(string input)
    {
        IBuffer buffer = CryptographicBuffer.ConvertStringToBinary(input, BinaryStringEncoding.Utf8);
        HashAlgorithmProvider hashAlgorithm = HashAlgorithmProvider.OpenAlgorithm(HashAlgorithmNames.Sha1);
        var hashByte = hashAlgorithm.HashData(buffer).ToArray();
        var sb = new StringBuilder(hashByte.Length * 2);
        foreach (byte b in hashByte)
        {
            sb.Append(b.ToString("x2"));
        }
        return sb.ToString();
    }

记住要加上

代码语言:javascript
复制
using Windows.Security.Cryptography;
using Windows.Security.Cryptography.Core;
票数 4
EN

Stack Overflow用户

发布于 2018-04-11 09:29:17

SHA1Managed只适用于安卓和iOs,对于Windows的使用:

如果因此需要一个字节数组:

代码语言:javascript
复制
    public byte[] getSHA1MessageDigest(string originalKey)
    {
        IBuffer buffer = CryptographicBuffer.ConvertStringToBinary(originalKey, BinaryStringEncoding.Utf8);
        HashAlgorithmProvider hashAlgorithm = HashAlgorithmProvider.OpenAlgorithm(HashAlgorithmNames.Sha1);
        IBuffer sha1 = hashAlgorithm.HashData(buffer);
        byte[] newByteArray;
        CryptographicBuffer.CopyToByteArray(sha1, out newByteArray);
        return newByteArray;
    }

如果因此需要一个字符串:

代码语言:javascript
复制
    public string getSHA1MessageDigest(string originalKey)
    {
        IBuffer buffer = CryptographicBuffer.ConvertStringToBinary(originalKey, BinaryStringEncoding.Utf8);
        HashAlgorithmProvider hashAlgorithm = HashAlgorithmProvider.OpenAlgorithm(HashAlgorithmNames.Sha1);
        IBuffer sha1 = hashAlgorithm.HashData(buffer);
        byte[] newByteArray;
        CryptographicBuffer.CopyToByteArray(sha1, out newByteArray);
        var sb = new StringBuilder(newByteArray.Length * 2);
        foreach (byte b in newByteArray)
        {
            sb.Append(b.ToString("x2"));
        }
        return sb.ToString();
    }
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38897468

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档