aes加解密

public class AESUtil {


 /**
     * AES加密
     *
     */

    public static String encrypt(String keyStr, String plainText) {
        try {
            Key key = generateKey(keyStr);
            Cipher cipher = Cipher.getInstance(AES_TYPE);
            cipher.init(Cipher.ENCRYPT_MODE, key);
            byte[] encrypt = cipher.doFinal(plainText.getBytes());
            return new String(Base64.encodeBase64(encrypt));
        } catch (Exception e) {
            log.error("AES encrypt error: {}", e.getMessage());
            e.printStackTrace();
            return null;
        }
    }

    private static Key generateKey(String key) {
        return new SecretKeySpec(key.getBytes(), "AES");
    }

    /**
     * AES解密
     */
    public static String decrypt(String keyStr, String encryptData) {
        try {
            Key key = generateKey(keyStr);
            Cipher cipher = Cipher.getInstance(AES_TYPE);
            cipher.init(Cipher.DECRYPT_MODE, key);
            byte[] decrypt = cipher.doFinal(Base64.decodeBase64(encryptData));
            return new String(decrypt);
        } catch (Exception e) {
            log.error("AES decrypt error: {}", e.getMessage());
            e.printStackTrace();
            return null;
        }
    }



    public static void main(String[] args) {

        String key = "zSj8eakp4NzSj8eakp4Nwert";
        System.out.println("加密结果"+encrypt(key,"13312341234"));
        System.out.println("解密结果"+decrypt(key,"QkYW9759n/KRaIeJN6vlVA=="));
    }


}

这个秘钥 key 有要求

密钥的长度可以使用128位、192位或256位  对应 128/8=16,192/8=24,256/8=32位,

'zSj8eakp4NzSj8eakp4Nwert' 这是24位   ;ddd 这是 3位

如果密钥要不是这样,就用‘空格’自动补全。所以在线在线AES加密解密 输入密码不满足位数,但是可以加密,代码执行报错,你需要将代码秘钥用空格补全


版权声明:本文为wy_2_7原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。