《java实现aes加密算法代码》由会员分享,可在线阅读,更多相关《java实现aes加密算法代码(10页珍藏版)》请在金锄头文库上搜索。
1、JAVA实现AES加密算法代码 近些年DES使用越来越少,原因就在于其使用56位密钥,比较容易被破解,近些年来逐渐被AES替代,AES已经变成目前对称加密中最流行算法之一;AES可以使用128、192、和256位密钥,并且用128位分组加密和解密数据。本文就简单介绍如何通过JAVA实现AES加密。1. JAVA实现闲话少许,掠过AES加密原理及算法,关于这些直接搜索专业网站吧,我们直接看JAVA的具体实现。1.1 加密代码有详细解释,不多废话。/* 加密* param content 需要加密的内容* param password 加密密码* return*/public static byt
2、e encrypt(String content, String password) try KeyGenerator kgen = KeyGenerator.getInstance(AES);kgen.init(128, new SecureRandom(password.getBytes();SecretKey secretKey = kgen.generateKey();byte enCodeFormat = secretKey.getEncoded();SecretKeySpec key = new SecretKeySpec(enCodeFormat, AES);Cipher cip
3、her = Cipher.getInstance(AES);/ 创建密码器byte byteContent = content.getBytes(utf-8);cipher.init(Cipher.ENCRYPT_MODE, key);/ 初始化byte result = cipher.doFinal(byteContent);return result; / 加密 catch (NoSuchAlgorithmException e) e.printStackTrace(); catch (NoSuchPaddingException e) e.printStackTrace(); catch
4、 (InvalidKeyException e) e.printStackTrace(); catch (UnsupportedEncodingException e) e.printStackTrace(); catch (IllegalBlockSizeException e) e.printStackTrace(); catch (BadPaddingException e) e.printStackTrace();return null;/* 加密* param content 需要加密的内容* param password 加密密码* return*/public static by
5、te encrypt(String content, String password) try KeyGenerator kgen = KeyGenerator.getInstance(AES);kgen.init(128, new SecureRandom(password.getBytes();SecretKey secretKey = kgen.generateKey();byte enCodeFormat = secretKey.getEncoded();SecretKeySpec key = new SecretKeySpec(enCodeFormat, AES);Cipher ci
6、pher = Cipher.getInstance(AES);/ 创建密码器byte byteContent = content.getBytes(utf-8);cipher.init(Cipher.ENCRYPT_MODE, key);/ 初始化byte result = cipher.doFinal(byteContent);return result; / 加密 catch (NoSuchAlgorithmException e) e.printStackTrace(); catch (NoSuchPaddingException e) e.printStackTrace(); catc
7、h (InvalidKeyException e) e.printStackTrace(); catch (UnsupportedEncodingException e) e.printStackTrace(); catch (IllegalBlockSizeException e) e.printStackTrace(); catch (BadPaddingException e) e.printStackTrace();return null;2.2 解密代码有详细注释,不多废话注意:解密的时候要传入byte数组view plaincopy to clipboardprint?/*解密*
8、param content 待解密内容* param password 解密密钥* return*/public static byte decrypt(byte content, String password) try KeyGenerator kgen = KeyGenerator.getInstance(AES);kgen.init(128, new SecureRandom(password.getBytes();SecretKey secretKey = kgen.generateKey();byte enCodeFormat = secretKey.getEncoded();Se
9、cretKeySpec key = new SecretKeySpec(enCodeFormat, AES);Cipher cipher = Cipher.getInstance(AES);/ 创建密码器cipher.init(Cipher.DECRYPT_MODE, key);/ 初始化byte result = cipher.doFinal(content);return result; / 加密 catch (NoSuchAlgorithmException e) e.printStackTrace(); catch (NoSuchPaddingException e) e.printS
10、tackTrace(); catch (InvalidKeyException e) e.printStackTrace(); catch (IllegalBlockSizeException e) e.printStackTrace(); catch (BadPaddingException e) e.printStackTrace();return null;/*解密* param content 待解密内容* param password 解密密钥* return*/public static byte decrypt(byte content, String password) try
11、 KeyGenerator kgen = KeyGenerator.getInstance(AES);kgen.init(128, new SecureRandom(password.getBytes();SecretKey secretKey = kgen.generateKey();byte enCodeFormat = secretKey.getEncoded();SecretKeySpec key = new SecretKeySpec(enCodeFormat, AES);Cipher cipher = Cipher.getInstance(AES);/ 创建密码器cipher.in
12、it(Cipher.DECRYPT_MODE, key);/ 初始化byte result = cipher.doFinal(content);return result; / 加密 catch (NoSuchAlgorithmException e) e.printStackTrace(); catch (NoSuchPaddingException e) e.printStackTrace(); catch (InvalidKeyException e) e.printStackTrace(); catch (IllegalBlockSizeException e) e.printStac
13、kTrace(); catch (BadPaddingException e) e.printStackTrace();return null;2.3 测试代码String content = test;String password = ;/加密System.out.println(加密前: + content);byte encryptResult = encrypt(content, password);/解密byte decryptResult = decrypt(encryptResult,password);System.out.println(解密后: + new String(
14、decryptResult);String content = test;String password = ;/加密System.out.println(加密前: + content);byte encryptResult = encrypt(content, password);/解密byte decryptResult = decrypt(encryptResult,password);System.out.println(解密后: + new String(decryptResult);输出结果如下:加密前:test解密后:test2.4 容易出错的地方但是如果我们将测试代码修改一下,如下:String content = test;String password = ;/加密System.out.println(加密前: + content);byte encryptResult = encrypt(content, password);try String encryptResultStr = new String(encryptResult,utf-8);/解密byte decryptResult = decrypt(encryptResultStr.getBytes(utf-8