我是計算機科學的學生,我們必須在我們的課程中使用BaseX(純Java OSS XML數據庫)。雖然通過代碼瀏覽我發現下面的代碼:BaseX XML數據庫代碼
/**
* Returns a md5 hash.
* @param pw password string
* @return hash
*/
public static String md5(final String pw) {
try {
final MessageDigest md = MessageDigest.getInstance("MD5");
md.update(Token.token(pw));
final TokenBuilder tb = new TokenBuilder();
for(final byte b : md.digest()) {
final int h = b >> 4 & 0x0F;
tb.add((byte) (h + (h > 9 ? 0x57 : 0x30)));
final int l = b & 0x0F;
tb.add((byte) (l + (l > 9 ? 0x57 : 0x30)));
}
return tb.toString();
} catch(final Exception ex) {
Main.notexpected(ex);
return pw;
}
}
(來源:https://svn.uni-konstanz.de/dbis/basex/trunk/basex/src/main/java/org/basex/util/Token.java)
只是出於興趣:發生了什麼呢?爲什麼在MD5之後進行這些字節操作?文檔字符串是說它返回一個MD5散列......是嗎?
THX的澄清 – 2010-06-05 12:29:51