AES加密解密方法
2017-12-21 10:33
375 查看
AES加密解密方法
/** * 加密方法 * @param data 要加密的数据 * @param key 加密key * @param iv 加密iv * @return 加密的结果 * @throws Exception */ public static String AESEncode(String data, String key, String iv,String type) throws Exception { try { if (Util.isEmpty(type)){ type="AES/CBC/PKCS5Padding"; } //根据指定的"算法/模式/补码方式",获取密码器 Cipher cipher = Cipher.getInstance(type);//"算法/模式/补码方式" int blockSize = cipher.getBlockSize(); byte[] dataBytes = data.getBytes(); int plaintextLength = dataBytes.length; if (plaintextLength % blockSize != 0) { plaintextLength = plaintextLength + (blockSize - (plaintextLength % blockSize)); } byte[] plaintext = new byte[plaintextLength]; System.arraycopy(dataBytes, 0, plaintext, 0, dataBytes.length); SecretKeySpec keyspec = new SecretKeySpec(key.getBytes(), "AES"); IvParameterSpec ivspec = new IvParameterSpec(iv.getBytes()); cipher.init(Cipher.ENCRYPT_MODE, keyspec, ivspec); byte[] encrypted = cipher.doFinal(plaintext); System.out.println("dataBytes : "+ByteString.of(dataBytes).hex()); System.out.println("plaintext : "+ByteString.of(plaintext).hex()); System.out.println("encrypted : "+ByteString.of(encrypted).hex()); return new String(Base64.encode(encrypted)); } catch (Exception e) { e.printStackTrace(); return null; } } /** * 解密方法 * @param data 要解密的数据 * @param key 解密key * @param iv 解密iv * @return 解密的结果 * @throws Exception */ public static String AESDecode(String data, String key, String iv ,String type) throws Exception { try { if (Util.isEmpty(type)){ type="AES/CBC/PKCS5Padding"; } byte[] encrypted1 = new Base64().decode(data); Cipher cipher = Cipher.getInstance(type); SecretKeySpec keyspec = new SecretKeySpec(key.getBytes(), "AES"); IvParameterSpec ivspec = new IvParameterSpec(iv.getBytes()); cipher.init(Cipher.DECRYPT_MODE, keyspec, ivspec); byte[] original = cipher.doFinal(encrypted1); String originalString = new String(original); return originalString; } catch (Exception e) { e.printStackTrace(); return null; } }
相关文章推荐
- DES、AES加密解密的方法
- C#实现对AES加密和解密的方法
- 理解AES加密解密的使用方法
- Java aes加密C#解密的取巧方法
- 使用AES加密解密在windows上使用没有问题,在Linux(Centos6.5)上出现解密失败的解决方法
- java AES加密解密方法
- Java与Node.js利用AES加密解密出相同结果的方法示例
- AES加密,解密方法
- Java AES加密解密的简单实现方法
- 基于PHP和JS的AES相互加密解密方法详解(CryptoJS)
- Java aes加密C#解密的取巧方法
- 9、Android与IOS通用AES加密解密方法
- AES加密以及解密的方法
- Android端对String进行AES加密/解密方法
- iOS AES加密解密实现方法
- ios常见加密解密方法(RSA、DES 、AES、MD5)
- VBS加密与VBE解密实现方法
- .NET中的加密解密:私钥加密(对称加密):AES、DES、RC2、Rijindael、TripleDES
- 在Java和C#中的简单的AES加密和解密
- C#加密方法(AES、MD5)