Dojo MD5哈希不是基数16表示法

时间:2013-01-21 15:42:49

标签: javascript hash dojo md5

我想在Dojo中生成一个MD5哈希,它将使用MessageDigest匹配我在Java中的哈希值。我想在Dojo中生成一个基本的16 md5哈希。你是怎么做到的?

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

//gives me CY9rzUYh03PK3k6DJie09g== 

//was hoping for 098f6bcd4621d373cade4e832627b4f6 

我没有在网上找到太多关于此的文档。

2 个答案:

答案 0 :(得分:3)

dojo MD5方法有第二个参数接受 outputType

d = dojox.encoding.digests.MD5("test", dojox.encoding.digests.outputTypes.Hex);

API文档令人困惑。你不能传入一个对象,只传递输出类型,它只是一个常数整数。

演示: JSFiddle

参考文献: APIGuide

答案 1 :(得分:0)

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

如果你想在javascript方面进行比较,我会使用encodeBase64String来编码来自MessageDigest的字节数组,并比较JS端的base64字符串。