<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    俊星的BLOG

    JAVA單向加密(MD5,SHA,MAC)

    具體代碼如下:
    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;

    /**
     * 加密(主要有:MD4,SHA,MAC)
     * 
     * 
    @author kinkding
     * @history 2009-6-3
     
    */

    public class MyEncrypt {
        
    /** MD5 加密 */
        
    public static byte[] encryptMD5(byte[] data) throws Exception {
            MessageDigest md5 
    = MessageDigest.getInstance("MD5");
            md5.update(data);
            
    return md5.digest();
        }


        
    /** SHA 加密 */
        
    public static byte[] encryptSHA(byte[] data) throws Exception {
            MessageDigest sha 
    = MessageDigest.getInstance("SHA");
            sha.update(data);
            
    return sha.digest();
        }


        
    /** 取得HMAC密鑰 */
        
    public static String getMacKey() throws Exception {
            KeyGenerator keyGenerator 
    = KeyGenerator.getInstance("HmacMD5");
            SecretKey secretKey 
    = keyGenerator.generateKey();
            
    return new BASE64Encoder().encode(secretKey.getEncoded());
        }


        
    /** 執行加密 */
        
    public static byte[] encryptHMAC(byte[] data, String key) throws Exception {
            
    byte[] bkey = new BASE64Decoder().decodeBuffer(key);
            SecretKey secretKey 
    = new SecretKeySpec(bkey, "HmacMD5");
            Mac mac 
    = Mac.getInstance(secretKey.getAlgorithm());
            mac.init(secretKey);
            
    return mac.doFinal(data);
        }


        
    private static String toHex(byte[] buffer) {
            StringBuffer sb 
    = new StringBuffer(buffer.length * 3);
            
    for (int i = 0; i < buffer.length; i++{
                sb.append(Character.forDigit((buffer[i] 
    & 0xf0>> 416));
                sb.append(Character.forDigit(buffer[i] 
    & 0x0f16));
            }

            
    return sb.toString();
        }


        
    public static void main(String[] args) {
            String msg 
    = "生活真好^_^";
            
    byte[] data = msg.getBytes();
            
    try {
                System.out.println(
    "msg:" + msg);
                System.out.println(
    "md5:" + toHex(encryptMD5(data)));
                System.out.println(
    "sha:" + toHex(encryptSHA(data)));
                String key 
    = getMacKey();
                System.out.println(
    "mac key:" + key);
                System.out.println(
    "mac:" + toHex(encryptHMAC(data, key)));
            }
     catch (Exception e) {
                e.printStackTrace();
            }


        }

    }


    運行效果如下:
    msg:生活真好^_^
    md5:e0649dfaef57789734e920c7ecb9c4ea
    sha:a4bd855836de26b2323778b797629fed4416f12f
    mac key:zBPe28oho2H84+Mg8mF4abpd0MQvdjgqgFdX4hmUQQbOGnX1aFq/oQnogsHVIczgx1AZ1s2/ncPz
    tBQIGLZUnw
    ==
    mac:87f4140161ad43797059e85dd9962897

    posted on 2009-06-03 23:20 俊星 閱讀(1266) 評論(0)  編輯  收藏


    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    主站蜘蛛池模板: 国产成人免费高清激情明星| 久久久久久久久久久免费精品| 99re在线视频免费观看| 国产成人精品日本亚洲| 久久免费99精品国产自在现线| 国产啪亚洲国产精品无码| h在线看免费视频网站男男| 国产精品亚洲mnbav网站| 成av免费大片黄在线观看| 亚洲va久久久噜噜噜久久| 四虎影视成人永久免费观看视频| 亚洲国产成人久久综合一| 在线免费中文字幕| 亚洲人成在久久综合网站| 免费黄色app网站| 亚洲精品电影天堂网| 国产日韩在线视频免费播放| 无码人妻AV免费一区二区三区| 亚洲一级二级三级不卡| 8x8×在线永久免费视频| 国产亚洲高清在线精品不卡| 亚洲国产综合人成综合网站| 日韩在线播放全免费| 一级做a爱过程免费视频高清| 亚洲av永久无码精品古装片| 毛片a级毛片免费观看品善网| a毛片全部免费播放| 亚洲国产精品综合福利专区| 亚洲无人区码一二三码区别图片| 成熟女人特级毛片www免费| 亚洲国产成人私人影院| 亚洲高清有码中文字| 免费午夜爽爽爽WWW视频十八禁| 福利免费在线观看| 亚洲第一二三四区| 亚洲AV伊人久久青青草原| 久久精品国产大片免费观看| 亚洲欧美日韩国产成人| 久久亚洲综合色一区二区三区| 免费无码A片一区二三区| a一级爱做片免费|