AES - 异常总结

本文涉及的产品
密钥管理服务KMS,1000个密钥,100个凭据,1个月
简介: AES - 异常总结

【1】javax.crypto.BadPaddingException: Given final block not properly padded


背景 : windows加密解密正常,windows加密linux解密出错,linux加密,windows解密出错。同一个明文,使用AES加密中的方法,windows和linux下加密结果不同。


解决办法:将SecretKey替换为如下

      /* 解决windows与linux相互加密解密出错 */
    public static SecretKey generateSKey(String strKey){
        try {
             KeyGenerator generator = KeyGenerator.getInstance( "AES" );  
             SecureRandom secureRandom = SecureRandom.getInstance("SHA1PRNG" );  
            secureRandom.setSeed(strKey.getBytes());  
            generator.init(128,secureRandom);  
            return generator.generateKey();
        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }



调整后加密示例如下:

/**  /**
         * [加密]<BR>
         *base64(aes(src,key))
         */
        public static String encryptBase64(String sSrc, String sKey) throws Exception {
            if (sKey == null) {
                return null;
            }
            // 判断Key是否为16位
            if (sKey.length() != 16) {
                return null;
            }
            // 返回实现指定算法的密码对象实例
            Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
            // 根据key产生指定算法的秘钥
           // byte[] raw = sKey.getBytes();
           //SecretKeySpec skeySpec = new SecretKeySpec(raw, "AES");
            SecretKey generateSKey = generateSKey(sKey);
            IvParameterSpec iv = new IvParameterSpec(IV_INIT.getBytes());
            cipher.init(Cipher.ENCRYPT_MODE, generateSKey , iv);
            byte[] encrypted = cipher.doFinal(sSrc.getBytes());
            //此处使用BASE64做转码功能,同时能起到2次加密的作用。
            return Base64Util.encode(encrypted);
        }
目录
相关文章
|
3月前
|
数据安全/隐私保护
aes之ecb模式的加密解密
aes之ecb模式的加密解密
|
算法 安全 调度
DES加密算法解析
DES加密算法解析
269 0
|
算法 搜索推荐 小程序
AES加密
AES加密
521 0
|
存储 算法 数据库
常用对称加密算法之AES算法-CBC模式
常用对称加密算法之AES算法-CBC模式
728 0
常用对称加密算法之AES算法-CBC模式
|
算法 数据安全/隐私保护
加密标准中DES与AES到底是什么?两者有啥区别?
我们生活在一个信息爆炸的时代,各类隐私数据的保护成了现代信息技术中最为重要的技术之一。**加密**就是保护数据最直接也是应用最为广泛的方法。
344 0
加密标准中DES与AES到底是什么?两者有啥区别?
|
C# 数据安全/隐私保护
C#使用SHA1加密类(RSAFromPkcs8)支持1024位和2048位私钥
C#使用SHA1加密类(RSAFromPkcs8)支持1024位和2048位私钥
271 0
|
Java 测试技术 Android开发
|
小程序 数据安全/隐私保护
小程序使用Base64加密key(秘钥)和iv(偏移量)在进行aes加密,AES加密技术简介与应用。
小程序使用Base64加密key(秘钥)和iv(偏移量)在进行aes加密,AES加密技术简介与应用。
1700 0
小程序使用Base64加密key(秘钥)和iv(偏移量)在进行aes加密,AES加密技术简介与应用。
|
C# 数据安全/隐私保护
C#实现微信AES-128-CBC加密数据的解密
原文:C#实现微信AES-128-CBC加密数据的解密 1.微信小程序登录获取用户的openid信息 需要使用AES-128-CBC解密处理 /// /// ASE加解密 /// ...
1564 0