2016-02-04 56 views
0

我想獲得char數組的md5散列。以下是我的代碼。Matlab-Java 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這顯然不匹配。

我不太確定問題出在哪裏,但也許它與第一行的字符轉換有關。

回答

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,[]) 
+0

我是個呆子,忘了轉!謝謝。 – warpstack

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(:).'