这段时间因为要对接一个外部接口,其参数的加密方式为AES,就需要学下AES的加密写法,但网上的资料不是很全,自己记录下遇到的坑;
基本写法
String str = "hello"; String password = "1234567890123456"; //新建一个密码编译器的实例,由三部分构成,用"http://www.likecs.com/"分隔,分别代表加密的类型(如AES,DES,RC2等),模式(AES中包含ECB,CBC,CFB,CTR,CTS等),补码方式(包含nopadding/PKCS5Padding等等),依据这三个参数可以创建很多种加密方式 Cipher cipher = Cipher.getInstance(String.format("%s/%s/%s", SymmetricAlgorithm.AES.name(), Mode.ECB.name(), Padding.PKCS5Padding.name())); //构建密钥 SecretKeySpec key = new SecretKeySpec(password.getBytes(Charset.forName("utf-8")),"AES"); cipher.init(Cipher.ENCRYPT_MODE, key);//使用加密模式初始化 密钥 byte[] encrypt = cipher.doFinal(str.getBytes()); //按单部分操作加密或解密数据,或者结束一个多部分操作。 System.out.println(Base64.encode(encrypt)); System.out.println("method2-加密:" + Arrays.toString(encrypt)); cipher.init(Cipher.DECRYPT_MODE, key);//使用解密模式初始化 密钥 byte[] decrypt = cipher.doFinal(encrypt); System.out.println("method2-解密后:" + new String(decrypt));