javascript - JavaScript CryptoJS.enc.Base64 等效 C#
问题描述
我正在尝试转换 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=
解决方案
不确定您的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
)
推荐阅读
- opengl - 是什么导致基于状态的顶点着色器的 GLSL 重新编译?
- java - Spring中异步发送消息中的“主题”一词是什么意思?
- undefined - 如何使用 React Google Maps 让我的路线显示在我的地图上?
- amazon-web-services - 胶水 ETL 脚本加载每日文件不起作用
- c# - C# 中的 Google 身份工具包 API
- html - 导航栏链接位置不在图像下方居中
- python - Python 使用预定义的类生成一些实例
- python - 字典中的值未排序
- arrays - 在 Julia 中初始化一个空数组,其中包含大量数组
- r - 在给定权重、波动率和相关矩阵的情况下计算 R 中的投资组合方差