为什么使用 CryptoJS 的 base64 与标准 base64 编码不同?

Why is base64 using CryptoJS different than a standard base64 encode?

要与服务器通信,我需要发送密码 SHA1 和 base64 编码方式与 CryptoJS 执行此操作的方式相同。

我的问题是我正在使用 VB.NET。典型的 base64 编码 (UTF-8) 结果与 CryptoJS 的结果不同。

我如何在 .NET 中以 CryptoJS 编码的方式对 SHA1 字符串进行 base64 编码?

您可以在这里看到两个结果:https://jsfiddle.net/hn5qqLo7/

var helloworld = "Hello World";
var helloword_sha1 = CryptoJS.SHA1(helloworld);
document.write("SHA1: " + helloword_sha1);

var helloword_base64 = helloword_sha1.toString(CryptoJS.enc.Base64);
document.write("1) Base64: " + helloword_base64);
document.write("2) Base64: " + base64_encode(helloword_sha1.toString()));

其中 base64_encode 将给定字符串转换为 Base 64 编码字符串。

看到了类似的问题,但是没看懂。 Decode a Base64 String using CryptoJS

在 fiddle 的 (1) 中,CryptoJS 计算字符串的 SHA1 值,然后将原始字节转换为 Base64。然而(2)先计算出'Hello World'的SHA1值,然后将其转化为16进制形式(仅由0-9和a-f组成),再将这个16进制形式的SHA1转成base64。所以这就是为什么你最终会得到两个不同的结果。