我正在尝试转换JavaScript CryptoJS.enc.Base64等效的C#。我盯着的绳子是“米老鼠”。98df1b3e0103f57a9817d675071504ba的结果与toMD5 JavaScript代码产生匹配的C#代码
但是,toB64代码对于JavaScript和C#有两个不同的结果。
mN8bPgED9XqYF9Z1BxUEug== JavaScript toB64结果
OThkZjFiM2UwMTAzZjU3YTk4MTdkNjc1MDcxNTA0YmE== C# toB64结果
JavaScript CryptoJS.enc.Base64等效的C#是什么,这样我就可以在C#中得到相同的结果?
// Javascript
// var toMD5 = CryptoJS.MD5("mickeymouse");
// toMD5 RESULT: 98df1b3e0103f57a9817d675071504ba
// C# (match with js)
var toMD5 = CreateMD5("mickeymouse");
// toMD5 RESULT: 98df1b3e0103f57a9817d675071504ba
// Javascript
// var toB64 = toMD5.toString(CryptoJS.enc.Base64);
// toB64 RESULT: mN8bPgED9XqYF9Z1BxUEug==
// C# (not matched with js)
var plainTextBytes = System.Text.Encoding.UTF8.GetBytes(toMD5);
var toB64 = System.Convert.ToBase64String(plainTextBytes);
// toB64 RESULT: OThkZjFiM2UwMTAzZjU3YTk4MTdkNjc1MDcxNTA0YmE=发布于 2021-10-06 17:29:24
不确定CreateMD5函数做什么,但是计算MD5字节并将它们直接传递给Convert.ToBase64String会产生预期的结果:
using var md5 = MD5.Create();
var hash = md5.ComputeHash(System.Text.Encoding.UTF8.GetBytes("mickeymouse"));
Console.WriteLine(Convert.ToBase64String(hash) == "mN8bPgED9XqYF9Z1BxUEug==");// prints True如果仍然需要使用CreateMD5 --使用反向算法将字节转换为字符串,而不仅仅是System.Text.Encoding.UTF8.GetBytes (因为System.Text.Encoding.UTF8.GetString(hash)产生的结果与CreateMD5不同)。
https://stackoverflow.com/questions/69469938
复制相似问题