阅读背景:

JAVA应用AES/DES算法时需要注意的地方

来源:互联网 

先说AES,看代码:

    public static byte[] doEncrypt(byte[] key, byte[] initialVector, byte[] text) {
        try {
            SecretKeySpec secretKeySpec = new SecretKeySpec(key, "AES");
            Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");//"算法/模式/补码方式"
            IvParameterSpec iv = new IvParameterSpec(initialVector);//使用CBC模式,需要一个向量iv,可增加加密算法的强度
            cipher.init(Cipher.ENCRYPT_MODE, secretKeySpec, iv);
            byte[] encrypted = cipher.doFinal(text);
            return encrypted;
        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }



    public static byte[] doEncryptByRandom(int length, byte[] key, byte[] initialVector, byte[] text) {
        try {
            KeyGenerator kgen = KeyGenerator.getInstance("AES");
            SecureRandom secureRandom = SecureRandom.getInstance("SHA1PRNG"); 
            secureRandom.setSeed(key);
            kgen.init(length, secureRandom);
            SecretKey secretKey = kgen.generateKey();
            byte[] enCodeFormat = secretKey.getEncoded();
            //return doEncrypt(enCodeFormat, initialVector, text);
            SecretKeySpec secretKeySpec = new SecretKeySpec(enCodeFormat, "AES");
            Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");//"算法/模式/补码方式"
            if (initialVector==null){
                initialVector = new byte[length/8];
            }else if (initialVector.length*8!=length){
                byte[] tmp = new byte[length/8];
                if (tmp.length>initialVector.length){
                    System.arraycopy(initialVector, 0, tmp, 0, initialVector.length);
                }else{
                    System.arraycopy(initialVector, 0, tmp, 0, tmp.length);
                }
                initialVector = tmp;
            }
            IvParameterSpec iv = new IvParameterSpec(initialVector);//使用CBC模式,需要一个向量iv,可增加加密算法的强度
            cipher.init(Cipher.ENCRYPT_MODE, secretKeySpec, iv);
            byte[] encrypted = cipher.doFinal(text);
            return encrypted;
        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }
    public static byte[] doEnc



你的当前访问异常,请进行认证后继续阅读剩余内容。

分享到: