2013-03-21 82 views
0

我有使用jasypt(Java的簡體加密)庫java代碼:爲什麼Salt的MD5結果在結果字符串的末尾有「==」?

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); 

你可以看到,我用MD5算法的鹽。

結果在控制檯是:

I9uMOxDiImtxMXKXkt2EUw== 

我想知道爲什麼會出現在結果字符串的結束「==」字?如果我使用了鹽,它才存在。

+2

請參閱相關:http://stackoverflow.com/questions/6916805/why-base64-encoding-string-have-sign-in-the-last – Krease 2013-03-21 05:56:13

回答

2

StandardStringDigester.digest API說結果以BASE64(默認)或HEXADECIMAL編碼,並作爲ASCII字符串返回。在你的情況這是BASE64

+0

據說,在維基百科: =='序列表示最後一個組只包含1個字節。最後一組是什麼意思? – null 2013-03-21 06:07:55

+1

base64轉換每個3字節的組 - > 4個字符。如果最後一組是2個字節,則結果用'='填充。如果它是1個字節,結果用「==」填充。 – 2013-03-21 06:24:47

+0

謝謝,我現在明白了 – null 2013-03-21 06:29:00

相關問題