我有一个在服务器端运行的 C# 算法,它散列一个 base64 编码的字符串。
byte[] salt = Convert.FromBase64String(serverSalt); // Step 1
SHA256Managed sha256 = new SHA256Managed(); // Step 2
byte[] hash = sha256.ComputeHash(salt); // Step 3
Echo("String b64: " + Convert.ToBase64String(hash)); // Step 4
然后根据散列的数据库列表检查散列。我很想用 javascript 实现同样的效果,使用 serverSalt,因为它是通过 websocket 从 C# 传输的。
我知道C# 和 Javascript 之间的 SHA-256 哈希值不同,因为 C# 和 Javascript 具有不同的字符串编码。但我知道我可以在字节数组中填充零以使 Javascript 表现得像 C#(上面的步骤 1 已解决)。
var newSalt = getByteArrayFromCSharpString(salt); // Pad zeros where needed
function getByteArrayFromCSharpString(inString)
{
var bytes = [];
for (var i = 0; i < inString.length; ++i)
{
bytes.push(inString.charCodeAt(i));
bytes.push(0);
}
return bytes;
}
谁能提供一些关于我可以使用哪些算法来重现步骤 2、3 和 4 的见解?
PS:周围已经有问题和答案,但没有一个代码片段。