Matlab-Java MD5提供不正确的哈希值

时间:2016-02-04 19:10:42

标签: java matlab hash md5

我正在尝试获取char数组的md5哈希值。以下是我的代码。

data = unicode2native(data, 'UTF-8');
K = java.security.MessageDigest.getInstance('MD5');
md5 = reshape(dec2hex(typecast(K.digest(data), 'UINT8')), 1, 32);

Wikipedia列出了字符串的一些示例哈希值。例如,"快速棕色狐狸的输入跳过懒狗"应该产生 9e107d9d372bb6826bd81d3542a419d6 的md5哈希,但是我的实现提供了以下 917932b86d134a1de0dd7b62b8d52496 ,这显然不匹配。

我不太确定问题出在哪里,但可能与第一行的char转换有关。

2 个答案:

答案 0 :(得分:4)

不,这是重塑的结果:

s = unicode2native('The quick brown fox jumps over the lazy dog','UTF-8');
K = java.security.MessageDigest.getInstance('MD5');
out = dec2hex(typecast(K.digest(s),'uint8'))

9E
10
7D
9D
37
2B
B6
82
6B
D8
1D
35
42
A4
19
D6

正确的重塑:

reshape(out',1,[])

答案 1 :(得分:1)

问题在于您使用reshape,删除它并且您已经能够识别哈希。

data='The quick brown fox jumps over the lazy dog'
data2 = unicode2native(data, 'ASC-II');
K = java.security.MessageDigest.getInstance('MD5');
md5 = dec2hex(typecast(K.digest(data2), 'UINT8')).';
md5 = md5(:).'