如基本的單向加密算法:
● BASE64 嚴格地說,屬于編碼格式,而非加密算法
● MD5(Message Digest algorithm 5,資訊摘要算法)
● SHA(Secure Hash Algorithm,安全雜湊演算法)
● HMAC(Hash Message Authentication Code,散列消息驗證碼)
BASE64
按照RFC2045的定義,Base64被定義為:Base64内容傳送編碼被設計用來把任意序列的8位位元組描述為一種不易被人直接識别的形式。(The Base64 Content-Transfer-Encoding is designed to represent arbitrary sequences of octets in a form that need not be humanly readable.)
常見于郵件、http加密,截取http資訊,你就會發現登入操作的使用者名、密碼字段通過BASE64加密的。
MD5
message-digest algorithm 5 (資訊-摘要算法)縮寫,廣泛用于加密和解密技術,常用于檔案校驗。校驗?不管檔案多大,經過MD5後都能生成唯一的MD5值。好比現在的ISO校驗,都是MD5校驗。怎麼用?當然是把ISO經過MD5後産生MD5的值。 SHA
SHA(Secure Hash Algorithm,安全雜湊演算法),數字簽名等密碼學應用中重要的工具,被廣泛地應用于電子商務等資訊安全領域。雖然,SHA與MD5通過碰撞法都被破解了, 但是SHA仍然是公認的安全加密算法,較之MD5更為安全。
HMAC
HMAC(Hash Message Authentication Code,散列消息驗證碼,基于密鑰的Hash算法的認證協定。消息驗證碼實作鑒别的原理是,用公開函數和密鑰産生一個固定長度的值作為認證辨別,用這個辨別鑒别消息的完整性。使用一個密鑰生成一個固定大小的小資料塊,即MAC,并将其加入到消息中,然後傳輸。接收方利用與發送方共享的密鑰進行鑒别認證等
package randy;
import java.security.MessageDigest;
import javax.crypto.KeyGenerator;
import javax.crypto.Mac;
import javax.crypto.SecretKey;
import javax.crypto.spec.SecretKeySpec;
import sun.misc.BASE64Decoder;
import sun.misc.BASE64Encoder;
/** *//**
* 基礎加密元件 http://www.bt285.cn http://www.feng123.com
*
* @author 梁棟
* @version 1.0
* @since 1.0
*/
public abstract class Coder {
public static final String KEY_SHA = "SHA";
public static final String KEY_MD5 = "MD5";
/** *//**
* MAC算法可選以下多種算法
*
* <pre>
* HmacMD5
* HmacSHA1
* HmacSHA256
* HmacSHA384
* HmacSHA512
* </pre>
*/
public static final String KEY_MAC = "HmacMD5";
* BASE64解密
* @param key
* @return
* @throws Exception
public static byte[] decryptBASE64(String key) throws Exception {
return (new BASE64Decoder()).decodeBuffer(key);
}
* BASE64加密
public static String encryptBASE64(byte[] key) throws Exception {
return (new BASE64Encoder()).encodeBuffer(key);
* MD5加密
* @param data
public static byte[] encryptMD5(byte[] data) throws Exception {
MessageDigest md5 = MessageDigest.getInstance(KEY_MD5);
md5.update(data);
return md5.digest();
* SHA加密
public static byte[] encryptSHA(byte[] data) throws Exception {
MessageDigest sha = MessageDigest.getInstance(KEY_SHA);
sha.update(data);
return sha.digest();
* 初始化HMAC密鑰
public static String initMacKey() throws Exception {
KeyGenerator keyGenerator = KeyGenerator.getInstance(KEY_MAC);
SecretKey secretKey = keyGenerator.generateKey();
return encryptBASE64(secretKey.getEncoded());
* HMAC加密
public static byte[] encryptHMAC(byte[] data, String key) throws Exception {
SecretKey secretKey = new SecretKeySpec(decryptBASE64(key), KEY_MAC);
Mac mac = Mac.getInstance(secretKey.getAlgorithm());
mac.init(secretKey);
return mac.doFinal(data);
}
好文章,先搜集了再說,有空細細研究一下
http://java.chinaitlab.com/JavaSecurity/788406_2.html