JAVA实现AES加密算法代码
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
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 byte[] 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 cipher =
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 (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 byte[] 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 cipher =
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 (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? /**解密* 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(); SecretKeySpec 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.printStackTrace(); } catch (InvalidKeyException e)
{ e.printStackTrace(); } catch (IllegalBlockSizeException e)
{ e.printStackTrace(); } catch (BadPaddingException e)