java实现AES对称加密
2016-06-13 14:37
323 查看
一个很简单的AES对称加密的实现,留着当作工具类用到的时候方便,密钥不能太短哦~
import javax.crypto.Cipher; import javax.crypto.spec.SecretKeySpec; import constants.newr.Constants; /** * AES * @author * @version */ public class AES { private static final String AES = "AES"; /** * 加密 * @param src * @param key * @return * @throws Exception */ public static byte[] encrypt(byte[] src, String key) throws Exception { Cipher cipher = Cipher.getInstance(AES); SecretKeySpec securekey = new SecretKeySpec(key.getBytes(), AES); cipher.init(Cipher.ENCRYPT_MODE, securekey);// 设置密钥和加密形式 return cipher.doFinal(src); } /** * 解密 * @param src * @param key * @return * @throws Exception */ public static byte[] decrypt(byte[] src, String key) throws Exception { Cipher cipher = Cipher.getInstance(AES); SecretKeySpec securekey = new SecretKeySpec(key.getBytes(), AES);// 设置加密Key cipher.init(Cipher.DECRYPT_MODE, securekey);// 设置密钥和解密形式 return cipher.doFinal(src); } /** * 加密 * @param data * @return */ public final static String encrypt(String src, String key) { try { return byte2hex(encrypt(src.getBytes(), key)); } catch (Exception e) { } return null; } /** * 解密 * @param data * @return */ public final static String decrypt(String src, String key) { try { return new String(decrypt(hex2byte(src.getBytes()), key)); } catch (Exception e) { } return null; } /** * byte数组转十六进制字符串 * @param b * @return */ public static String byte2hex(byte[] b) { String hs = ""; String stmp = ""; for (int n = 0; n < b.length; n++) { stmp = (java.lang.Integer.toHexString(b & 0XFF)); if (stmp.length() == 1) hs = hs + "0" + stmp; else hs = hs + stmp; } return hs.toUpperCase(); } /** * 十六进制字符串转byte数组 * @param b * @return */ public static byte[] hex2byte(byte[] b) { if ((b.length % 2) != 0) throw new IllegalArgumentException("长度不是偶数"); byte[] b2 = new byte[b.length / 2]; for (int n = 0; n < b.length; n += 2) { String item = new String(b, n, 2); b2[n / 2] = (byte) Integer.parseInt(item, 16); } return b2; } public static void main(String[] args) { String encrypt = encrypt("hello", "ba5VHrFC8ViyN0JRG4xJyXtREe6xScbS"); System.out.println(encrypt); String decrypt = decrypt(encrypt, "ba5VHrFC8ViyN0JRG4xJyXtREe6xScbS"); System.out.println(decrypt); } }
相关文章推荐
- C#对称加密(AES加密)每次生成的结果都不同的实现思路和代码实例
- c#通过DES加密算法加密大文件的方法
- 详解nodejs与javascript中的aes加密
- javascript实现des解密加密全过程
- php中AES加密解密的例子小结
- C#代码实现对AES加密解密
- C++中四种加密算法之AES源代码
- JS实现的3des+base64加密解密算法完整示例
- Android AES加密工具类分享
- C语言使用openSSL库DES模块实现加密功能详解
- C++实现DES加密算法实例解析
- PHP、Java des加密解密实例
- PHP使用DES进行加密与解密的方法详解
- PHP和.net中des加解密的实现方法
- php写的AES加密解密类分享
- PHP中加密解密函数与DES加密解密实例
- .NET中的DES对称加密详解
- java中DES加密解密
- Java使用AES加密和解密的实例详解
- java常用工具类之DES和Base64加密解密类