<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
    主站蜘蛛池模板: 精品久久免费视频| 在线美女免费观看网站h| 国内外成人免费视频| 亚洲黄页网在线观看| 毛片a级三毛片免费播放| xxx毛茸茸的亚洲| 成人毛片免费观看视频在线| 亚洲熟妇av午夜无码不卡| 韩国免费一级成人毛片| 亚洲色无码国产精品网站可下载| 成年女人免费碰碰视频| 亚洲av永久无码| 亚洲无码高清在线观看| baoyu116.永久免费视频| 亚洲日本中文字幕区| 国产精品免费观看| 亚洲日本成本人观看| 亚洲精品成a人在线观看| 精品成人免费自拍视频| 亚洲综合图片小说区热久久| 免费精品人在线二线三线区别 | 亚洲综合精品一二三区在线| 无码国产精品一区二区免费式芒果| 亚洲精品国产肉丝袜久久| 好吊妞在线新免费视频| a一级爱做片免费| 日韩精品一区二区亚洲AV观看| 免费看美女裸露无档网站| 黄色a级免费网站| 亚洲高清在线观看| 最近中文字幕mv免费高清视频7 | 亚洲va精品中文字幕| 国产美女a做受大片免费| 中国一级毛片视频免费看| 亚洲午夜久久久久久尤物| 国产禁女女网站免费看| 华人在线精品免费观看| 亚洲AV成人无码久久WWW| 久久精品国产亚洲| 国产免费啪嗒啪嗒视频看看| 久久精品国产免费|