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


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


    網站導航:
     
    主站蜘蛛池模板: 中文字幕精品三区无码亚洲| 免费大黄网站在线观| 免费精品无码AV片在线观看| 99免费在线视频| 国产特黄一级一片免费| 一级毛片免费播放试看60分钟| 国产亚洲视频在线播放大全| 亚洲av色香蕉一区二区三区| 亚洲av无码一区二区三区人妖| 亚洲AV无码成人精品区日韩| 欧洲乱码伦视频免费国产| 一级特黄aaa大片免费看| 一级做受视频免费是看美女 | 亚洲成a人在线看天堂无码| 国产国产人免费人成免费视频| 在线免费观看国产视频| 免费观看男人免费桶女人视频| 女人被弄到高潮的免费视频| 日本一区二区三区日本免费| 亚洲高清免费视频| 亚洲尤码不卡AV麻豆| 亚洲国产精品无码专区影院 | 免费在线观看一级毛片| 亚洲精品tv久久久久久久久久| 久久99亚洲综合精品首页 | 午夜一级免费视频| 国产免费av片在线播放| 亚洲一区二区三区在线视频| 久久综合亚洲色HEZYO国产| 亚洲av永久无码精品国产精品| 激情内射亚洲一区二区三区| 亚洲影视自拍揄拍愉拍| 香港经典a毛片免费观看看| www在线观看播放免费视频日本| 久久国产乱子伦精品免费强| 成人在线免费看片| 免费永久在线观看黄网站| 国产亚洲情侣一区二区无码AV| 亚洲一区二区三区四区在线观看| 中文字幕在线观看亚洲视频| 老司机午夜精品视频在线观看免费|