【发布时间】:2021-11-26 21:11:32
【问题描述】:
我正在尝试转换 JavaScript CryptoJS.enc.Base64 等效 C#。 我的凝视字符串是“mickeymouse”。 toMD5 JavaScript 代码生成与 C# 代码匹配的结果: 98df1b3e0103f57a9817d675071504ba
但是,toB64 代码会导致 JavaScript 与 C# 的两种不同结果。
JavaScript toB64 结果:mN8bPgED9XqYF9Z1BxUEug==
C# toB64 结果:OThkZjFiM2UwMTAzZjU3YTk4MTdkNjc1MDcxNTA0YmE==
什么是 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=
【问题讨论】:
-
在 C# 中,您似乎正在对已经使用十六进制编码的字符串进行 base64 编码。如果这是您的
CreateMD5函数返回的内容并且您无法更改它,请参阅 stackoverflow.com/questions/46327156/… 以首先对 MD5 结果进行非十六进制编码,然后对其进行 base64 编码。
标签: javascript c# base64 cryptojs