什么样的哈希算法产生这种文本?

时间:2013-01-21 15:41:06

标签: hash

8A-25-A5-14-E9-E0-A8-02-0E-91-32-46-44-7E-EE-11

以上是散列文字。原文是“welcome1”。有人可以识别这里使用的算法吗?

1 个答案:

答案 0 :(得分:2)

根据this site,它显然是“welcome1”的Unicode表示的md5哈希

  

MD5(Unicode)的:
  ...
  8a25a514e9e0a8020e913246447eee11:welcome1

具体来说,它是字符串“welcome1”的UTF-16LE(UTF16 Little Endian)表示

        MessageDigest md = MessageDigest.getInstance("MD5");
        byte[] output = md.digest("welcome1".getBytes("UTF-16LE"));
        for(byte out: output){
            System.out.printf("%x", out);
        }
        System.out.println();

输出:

8a25a514e9e0a82e913246447eee11

短划线不是散列输出的一部分,只是十六进制字符。把它们拿出来并用谷歌搜索哈希通常会出现结果,特别是如果它是一个常见的短语,如“welcome1”

这是一个很好的对象课程,为什么在处理散列算法时记住字符编码很重要,因为它们对字节而不是字符进行操作。 ASCII或UTF8(甚至UTF-16BE)中的散列“welcome1”会导致输出异常不同,因为字符具有不同的基础字节表示。