2016-02-04 3 views
0

Я пытаюсь получить хеш md5 массива char. Ниже мой код.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 перечислены некоторые из примеров хеш-значения для строк. Например, вход «шустрая лиса перепрыгивает через ленивую собаку» должно дать md5 хэш 9e107d9d372bb6826bd81d3542a419d6, однако моя реализация дает следующее 917932b86d134a1de0dd7b62b8d52496, который явно не соответствует.

Я не совсем уверен, где проблема, но, возможно, это связано с преобразованием символа на первой строке.

ответ

4

Нет, это Reshape, что он выключен:

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:

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(:).' 
Смежные вопросы