<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)  編輯  收藏


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


    網站導航:
     
    主站蜘蛛池模板: 一区二区三区在线免费观看视频 | 国产精品V亚洲精品V日韩精品| 亚洲AⅤ无码一区二区三区在线 | 男女拍拍拍免费视频网站| 中文字幕一区二区免费| 91精品手机国产免费| 成人男女网18免费视频| 亚洲精品国自产拍在线观看| 亚洲av午夜精品一区二区三区| 久久99精品免费一区二区| 99精品免费视频| 8x8×在线永久免费视频| 一个人免费观看www视频在线| 精品久久久久久久免费人妻| 久久久亚洲精品蜜桃臀| 亚洲AV福利天堂一区二区三 | 亚洲日韩中文无码久久| 免费观看无遮挡www的小视频| 24小时日本在线www免费的| 免费a级毛片18以上观看精品| 久久九九亚洲精品| 亚洲一区二区三区久久| 一区二区三区免费高清视频| 57pao一国产成视频永久免费| 日本人的色道www免费一区| 亚洲午夜久久久久久噜噜噜| 亚洲中文无码线在线观看| 特级毛片A级毛片100免费播放| 免费成人在线视频观看| 成人五级毛片免费播放| 国产偷v国产偷v亚洲高清| 2020国产精品亚洲综合网| 国产精品无码永久免费888| 59pao成国产成视频永久免费| 免费永久国产在线视频| 亚洲网站在线观看| 菠萝菠萝蜜在线免费视频| 精品熟女少妇av免费久久| 免费人成年轻人电影| 亚洲色图校园春色| 一级毛片免费播放试看60分钟 |