关于java:为什么这个带有Salt的MD5结果在结果字符串的末尾有“==”?

Why this MD5 result with Salt has “==” in the end of result string?

本问题已经有最佳答案,请猛点这里访问。

我有使用JavyPT(Java简化加密)库的Java代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
    StandardStringDigester digester = new StandardStringDigester();
    digester.setAlgorithm("MD5");
    digester.setIterations(1);

    FixedStringSaltGenerator saltGenerator = new FixedStringSaltGenerator();
    saltGenerator.setSalt("justAnotherSalt");

    digester.setSaltGenerator(saltGenerator);
    digester.setSaltSizeBytes(5);

    String digest = digester.digest("my_password");

    System.out.println(digest);

您可以看到我在salt中使用了MD5算法。

控制台中的结果是:

1
I9uMOxDiImtxMXKXkt2EUw==

我想知道为什么在结果字符串的末尾有"=="字符?只有我用盐才有。


说的结果是standardstringdigester.digest API在Base64编码和(默认)或是十六进制形式为ASCII字符串返回。在你的案例这是base64