Javascript Dojo MD5散列不使用base 16表示法

Javascript Dojo MD5散列不使用base 16表示法,javascript,hash,dojo,md5,Javascript,Hash,Dojo,Md5,我想使用MessageDigest在Dojo中生成一个MD5散列,该散列将与我在Java中的散列相匹配。我希望在Dojo中生成一个基本的16MD5哈希。你是怎么做到的 dojo.require("dojox.encoding.digests.MD5"); var d = dojox.encoding.digests.MD5("test"); //gives me CY9rzUYh03PK3k6DJie09g== //was hoping for 098f6bcd4621d373cade4e

我想使用
MessageDigest
在Dojo中生成一个MD5散列,该散列将与我在Java中的散列相匹配。我希望在Dojo中生成一个基本的16MD5哈希。你是怎么做到的

dojo.require("dojox.encoding.digests.MD5");
var d = dojox.encoding.digests.MD5("test");

//gives me CY9rzUYh03PK3k6DJie09g== 

//was hoping for 098f6bcd4621d373cade4e832627b4f6 

我在网上找不到太多关于这方面的文档。

这是Base64编码。如果您愿意在Java端进行解码(与MessageDigest输出进行比较),那么您可以使用Apache Commons codec中的方法获取字节数组,然后比较MessageDigest中的字节数组输出


如果您想在javascript端进行比较,我将改为对MessageDigest中的字节数组进行编码,并在JS端比较base64字符串。

dojo MD5方法还有第二个参数,该参数接受输出类型:

d = dojox.encoding.digests.MD5("test", dojox.encoding.digests.outputTypes.Hex);
API文档令人困惑。您不会传入对象,只传递输出类型,它只是一个常量整数

演示:

参考资料: ,

这正是您想要的,只是采用了不同的编码。它给你64进制的MD5哈希。这里有一个网站,可以让你从Base 64转换为hex:我会用JavaScript示例给出更多的细节和完整的答案,但我目前正在用手机回答。希望这些信息足够让你开始学习。