【问题标题】:Why this MD5 result with Salt has "==" in the end of result string? [duplicate]为什么这个带有 Salt 的 MD5 结果在结果字符串的末尾有“==”? [复制]
【发布时间】:2013-03-10 13:03:36
【问题描述】:

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

    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算法。

控制台中的结果是:

I9uMOxDiImtxMXKXkt2EUw==

我想知道为什么结果字符串的末尾有“==”字符?只有当我使用 Salt 时它才会存在。

【问题讨论】:

标签: java hash md5 salt jasypt


【解决方案1】:

StandardStringDigester.digest API 说 结果以 BASE64(默认)或 HEXADECIMAL 编码并作为 ASCII 字符串返回。在您的情况下,这是 BASE64

【讨论】:

  • 维基百科中说:'=='序列表示最后一组仅包含1个字节。最后一组是什么意思?
  • base64 转换每组 3 个字节 -> 4 个字符。如果最后一组是 2 个字节,则结果用 '=' 填充。如果它是 1 字节,则结果用“==”填充。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-05-04
  • 1970-01-01
  • 2023-02-10
  • 2023-04-10
  • 1970-01-01
相关资源
最近更新 更多