本文主要談一下密碼學中的加密和數字簽名以及其在java中如何進行使用對密碼學有興趣的伙伴推薦看Bruce Schneier的著作Applied Crypotography在jdk的發行版本中安全性方面有了很大的改進也提供了對RSA算法的直接支持現在我們從實例入手解決問題(本文僅是作為簡單介紹)
一密碼學上常用的概念
)消息摘要
這是一種與消息認證碼結合使用以確保消息完整性的技術主要使用單向散列函數算法可用於檢驗消息的完整性和通過散列密碼直接以文本形式保存等目前廣泛使用的算法有MDMDSHAjdk對上面都提供了支持在java中進行消息摘要很簡單 javasecurityMessageDigest提供了一個簡易的操作方法
Java代碼
/**
*MessageDigestExamplejava
*Copyright
*/
import javasecurityMessageDigest;
/**
*單一的消息摘要算法不使用密碼可以用來對明文消息(如密碼)隱藏保存
*/
public class MessageDigestExample{
public static void main(String[] args) throws Exception{
if(argslength!=){
Systemerrprintln(Usage:java MessageDigestExample text);
Systemexit();
}
byte[] plainText=args[]getBytes(UTF);
//使用getInstance(算法)來獲得消息摘要這裡使用SHA的位算法
MessageDigest messageDigest=MessageDigestgetInstance(SHA);
Systemoutprintln(
+messageDigestgetProvider()getInfo());
//開始使用算法
messageDigestupdate(plainText);
Systemoutprintln(
Digest:);
//輸出算法運算結果
Systemoutprintln(new String(messageDigestdigest()UTF));
}
}
還可以通過消息認證碼來進行加密實現javaxcryptoMac提供了一個解決方案有興趣者可以參考相關API文檔本文只是簡單介紹什麼是摘要算法
From:http://tw.wingwit.com/Article/program/Java/gj/201311/27287.html