密碼學 基於Java的MD5加密實現方式

2021-09-02 14:24:09 字數 1703 閱讀 8752

md5的典型應用是對一段message(位元組串)產生fingerprint(指紋),以防止被「篡改」。舉個例子,你將一段話寫在乙個叫 readme.txt檔案中,並對這個readme.txt產生乙個md5的值並記錄在案,然後你可以傳播這個檔案給別人,別人如果修改了檔案中的任何內容,你對這個檔案重新計算md5時就會發現(兩個md5值不相同)。如果再有乙個第三方的認證機構,用md5還可以防止檔案作者的「抵賴」,這就是所謂的數字簽名應用。

/**

* md5加密方式(1)

* @param message

* @return

* @throws nosuchalgorithmexception

* @throws unsupportedencodingexception

*/public static string md5encode(string message) throws nosuchalgorithmexception, unsupportedencodingexception

}//標準的md5加密後的結果

return buffer.tostring().touppercase();

}

/**

* 普通的md5加密方式(2)

* @param message

* @return

* @throws unsupportedencodingexception

* @throws nosuchalgorithmexception

*/public static string publicmd5encode(string message) throws unsupportedencodingexception, nosuchalgorithmexception ;

byte result = message.getbytes("utf-8");

//獲得md5摘要演算法的 messagedigest物件

messagedigest md5digest = messagedigest.getinstance("md5");

//使用指定的位元組更新摘要

md5digest.update(result);

//獲得密文

byte md = md5digest.digest();

int j = md.length;

char str = new char[j*2];

int k = 0;

for(int i=0;i>4&0xf];

str[k++] = haxdigests[byte0&0xf];

} return new string(str);

}

public static void main(string args)  catch (exception e) 

system.out.println("方式1:"+md5);//e94e8bd35fc8144f38fd1ebc1f81ab36

system.out.println("方式2:"+pmd5);//e94e8bd35fc8144f38fd1ebc1f81ab36

}

注意:message.getbytes("utf-8"),將字串變為位元組陣列的時候,需要設定乙個編碼格式,如果不設定的很可能導致生成的md5加密結果與其他人生成的加密結果不一致

參考:

MD5 密碼加密

asp.net中md5加密碼的方法 page language c contenttype text html import namespace system asp.net中實現對密碼的加密 方法一 public static string encrypt string password,int ...

Shiro密碼的MD5加密 MD5鹽值加密

用md5加密演算法後,前台使用者輸入的字串如何使用md5加密,需要做的是將當前的realm 的credentialsmatcher屬性,替換為md5credentialsmatcher 由於md5credentialsmatcher已經過期了,推薦使用hashedcredentialsmatcher...

Md5加密Java實現

實現方法有 1.對已經進行過md5加密的資料再次進行md5加密。2.對原有資料加一串其他字元來使其變得複雜也可以做到不能被解碼。所加字串一般是已經協商好的 1 壓縮性 任意長度的資料,算出的md5值長度都是固定的。2 容易計算 從原資料計算出md5值很容易。3 不可逆 對原資料進行任何改動,哪怕只修...