0

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

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

4

1 回答 1

2

根据这个站点,它显然是“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”会导致输出截然不同,因为字符具有不同的底层字节表示。

于 2013-01-21T17:35:21.127 回答