gpt4 book ai didi

c# - Windows Phone 8.1 应用程序和 UWP 应用程序之间的 SHA1 哈希值不同

转载 作者:太空宇宙 更新时间:2023-11-03 23:12:20 24 4
gpt4 key购买 nike

在 Windows Phone 8 中,我可以这样做:

 SHA1Managed s = new SHA1Managed();
UTF8Encoding enc = new UTF8Encoding();
s.ComputeHash(enc.GetBytes(password.ToCharArray()));
string hash = BitConverter.ToString(s.Hash).Replace("-", "").ToLower();

我正在为 UWP 应用程序做:

IBuffer buffUtf8Msg = CryptographicBuffer.ConvertStringToBinary(password, BinaryStringEncoding.Utf8);

HashAlgorithmProvider objAlgProv = HashAlgorithmProvider.OpenAlgorithm(HashAlgorithmNames.Sha1);

IBuffer buffHash = objAlgProv.HashData(buffUtf8Msg);

if (buffHash.Length != objAlgProv.HashLength)
{
throw new Exception("There was an error creating the hash");
}

string strHashBase64 = CryptographicBuffer.EncodeToBase64String(buffHash);

string hash = strHashBase64.Replace("-", "").ToLower();

我没有得到相同的结果。

例如,如果我有文本“Windows 8”,我会得到

6517856f8c3a3fda3ae28305a05d127f0e1bdb97 (Windows 电话 8.1)

zrefb4w6p9o64omfof0sfw4b25c= (UWP)

我不太清楚我做错了什么。目标是仅获取字符串的 SHA1 哈希值。

最佳答案

不是在 UWP 代码 (CryptographicBuffer.EncodeToBase64String(buffHash)) 下编码为 base64,您可能想要编码为十六进制:

string strHex = CryptographicBuffer.EncodeToHexString(buffHash);
string hash = strHex.ToLower();

因此您的 Windows Phone 8 代码和 UWP 代码将产生相同的输出(十六进制编码 SHA1)。

关于c# - Windows Phone 8.1 应用程序和 UWP 应用程序之间的 SHA1 哈希值不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38680785/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com