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

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

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

    lyyb2001

    只是為方便自己找記錄而已
    posts - 57, comments - 27, trackbacks - 0, articles - 5
      BlogJava :: 首頁 :: 新隨筆 :: 聯系 ::  :: 管理

    登陸用戶名的加密與解密

    Posted on 2015-03-27 10:50 skycity 閱讀(208) 評論(0)  編輯  收藏 所屬分類: J2EE技術
    package com.skycity.framework.utility;
    import javax.crypto.Cipher;
    import javax.crypto.KeyGenerator;
    import javax.crypto.SecretKey;
    import javax.crypto.spec.SecretKeySpec;

    import sun.misc.BASE64Decoder;
    import sun.misc.BASE64Encoder;

    import com.skycity.framework.Constant;

    public class EncryptUtil {
        // 加密字符串
        public static String encryptMode(String keybyte, String src) {
            try { // 生成密鑰
                SecretKey deskey = new SecretKeySpec(new BASE64Decoder().decodeBuffer(keybyte), Constant.ALGORITHM); // 加密
                Cipher c1 = Cipher.getInstance(Constant.ALGORITHM);
                c1.init(Cipher.ENCRYPT_MODE, deskey);
                byte[] result = c1.doFinal(src.getBytes());
                return new BASE64Encoder().encode(result);
            } catch (java.security.NoSuchAlgorithmException e1) {
                e1.printStackTrace();
            } catch (javax.crypto.NoSuchPaddingException e2) {
                e2.printStackTrace();
            } catch (java.lang.Exception e3) {
                e3.printStackTrace();
            }
            return null;
        }
     
        // 解密字符串
        public static String decryptMode(String keybyte, String encryStr) {
            try { // 生成密鑰
                SecretKey deskey = new SecretKeySpec(new BASE64Decoder().decodeBuffer(keybyte), Constant.ALGORITHM); // 解密
                Cipher c1 = Cipher.getInstance(Constant.ALGORITHM);
                c1.init(Cipher.DECRYPT_MODE, deskey);
                byte[] result = c1.doFinal(new BASE64Decoder().decodeBuffer(encryStr));
                return new String(result);
            } catch (java.security.NoSuchAlgorithmException e1) {
                e1.printStackTrace();
            } catch (javax.crypto.NoSuchPaddingException e2) {
                e2.printStackTrace();
            } catch (java.lang.Exception e3) {
                e3.printStackTrace();
            }
            return null;
        }
        //創建一個密鑰
        public static byte[] createSecretKey() {
    KeyGenerator keygen = null;
    try {
    keygen = KeyGenerator.getInstance(Constant.ALGORITHM);
    SecretKey deskey = keygen.generateKey();
    return deskey.getEncoded();
    } catch (Exception e) {
    LogUtil.error("NoSuchAlgorithmException!");
    }
    return null;
    }
        
        public static void main(String[] args){ 
            final byte[] keyBytes = createSecretKey();    
            String key= new BASE64Encoder().encode(keyBytes);
            String szSrc = "admin";
            System.out.println("加密前的字符串:" + szSrc);
            String password = encryptMode(key,szSrc);
            System.out.println("加密后的字符串:" + password);
    String result = decryptMode(key, password);
            System.out.println("解密后的字符串:" + result);
        }
    }

    數據庫表中有一個字段用于保存Key,一個字段用于保存password,更改密碼的時候,重新生成一個KEY,然后生成一個PASSWORD,匹配保存到數據庫中。
    當登陸時,用數據庫保存的KEY和password進行解密,然后與登陸時輸入的password進行比較,如果相等,則成功。
    算法支持AES,DES,DESede,Blowfish等算法


    Lyyb2001
    主站蜘蛛池模板: 亚洲AV无码精品色午夜果冻不卡| 亚洲国产天堂久久综合| 亚洲国产第一页www| 老司机69精品成免费视频| 国产gv天堂亚洲国产gv刚刚碰 | 无码国产精品久久一区免费| 精品日韩亚洲AV无码一区二区三区 | 亚洲国产成人高清在线观看 | fc2免费人成在线视频| 亚洲精品国产va在线观看蜜芽| 美女被爆羞羞网站免费| 亚洲毛片网址在线观看中文字幕| 一级特黄录像免费播放中文版| 国产精品免费无遮挡无码永久视频 | www国产亚洲精品久久久日本| 极品美女一级毛片免费| 国产亚洲精品资在线| 亚洲爆乳无码专区www| 国产成人免费高清在线观看| 久久精品国产亚洲AV无码麻豆| 国产精品久久免费| 亚洲码和欧洲码一码二码三码| 久久久久久一品道精品免费看| 国产在线观看www鲁啊鲁免费| 美女18毛片免费视频| 中国在线观看免费国语版| 亚洲国产精品无码久久久秋霞1| 在线观看国产情趣免费视频| 亚洲国产综合人成综合网站00| 一个人在线观看视频免费| 相泽南亚洲一区二区在线播放| 亚洲夜夜欢A∨一区二区三区| 99久久精品免费视频| 亚洲精品乱码久久久久久久久久久久 | 国产亚洲欧洲Aⅴ综合一区 | 久久亚洲精品中文字幕三区| 亚洲第一网站免费视频| 国产精品亚洲专区无码牛牛| 国产亚洲精品a在线观看app| 97碰公开在线观看免费视频| 国产天堂亚洲国产碰碰|