在.Net中我以这种方式生成哈希:
Convert.ToBase64String(SHA256.Create().ComputeHash(Encoding.UTF8.GetBytes("123456")));
结果是:" jZae727K08KaOmKSgOaGzww / XVqGr / PKEgIMkjrcbJI ="
现在我使用此library在React Native应用中生成哈希:
import { sha256 } from 'react-native-sha256';
return await sha256('123456');
结果是:" 8d969eef6ecad3c29a3a629280e686cf0c3f5d5a86aff3ca12020c923adc6c92"
不确定我做错了什么......
修改:
最终解决方案(感谢Martin Backasch):
var inputBytes = Encoding.UTF8.GetBytes("123456");
var hashBytes = SHA256.Create().ComputeHash(inputBytes);
return BitConverter.ToString(hashBytes).Replace("-", string.Empty).ToLower();
答案 0 :(得分:3)
图书馆的结果是HEX
。
您必须将其转换为Base64
试试here。
输入:
"8d969eef6ecad3c29a3a629280e686cf0c3f5d5a86aff3ca12020c923adc6c92"
输出:
"jZae727K08KaOmKSgOaGzww/XVqGr/PKEgIMkjrcbJI="
您可以使用microsoft提供的示例或快速代码段将您的C#结果从Base64
转换为HEX
:
var yourResult = Convert.ToBase64String(SHA256.Create()
.ComputeHash(Encoding.UTF8
.GetBytes("123456")));
var apiResult = "8d969eef6ecad3c29a3a629280e686cf0c3f5d5a86aff3ca12020c923adc6c92";
var yourHexResult = BitConverter.ToString(Convert.FromBase64String(yourResult))
.Replace("-", string.Empty)
.ToLower();
Debug.Assert(yourHexResult == apiResult, "yourHexResult != apiResult");