【问题标题】:Matlab-Java MD5 giving incorrect hashesMatlab-Java MD5 给出不正确的哈希值
【发布时间】:2016-02-04 19:10:42
【问题描述】:

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

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

Wikipedia 列出了字符串的一些示例哈希值。例如,“The quick brown fox jumps over the lazy dog”的输入应该产生 9e107d9d372bb6826bd81d3542a419d6 的 md5 哈希值,但是我的实现给出了以下 917932b86d134a1de0dd7b62b8d52496 显然不是匹配。

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

【问题讨论】:

    标签: java matlab hash md5


    【解决方案1】:

    不,它是关闭的重塑:

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

    【讨论】:

    • 我是个混蛋,忘了转置!谢谢。
    【解决方案2】:

    问题是你使用了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(:).'
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-05-19
      • 1970-01-01
      • 1970-01-01
      • 2020-12-08
      • 2017-11-23
      相关资源
      最近更新 更多