我在服务器端运行的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
Run Code Online (Sandbox Code Playgroud)
然后根据哈希的数据库列表检查哈希.我喜欢用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;
}
Run Code Online (Sandbox Code Playgroud)
任何人都可以提供一些有关我可以用来重现步骤2,3和4的算法的见解吗?
PS:已经有问题和答案,但没有一个代码片段.