天天看點

JAVA 簡單的加密技術

 如基本的單向加密算法:

    ●  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

下一篇: Maven 教程

繼續閱讀