Java代码实现

import java.security.SecureRandom;
import javax.crypto.Cipher;
import javax.crypto.KeyGenerator;
import javax.crypto.SecretKey; public class AesEntriptor {
private Cipher encryptCipher; // 负责加密工作
private Cipher decryptCipher; // 负责解密工作
public AesEntriptor(String rules) throws Exception {
// 1.实例化AES算法密钥生成器
KeyGenerator keygen = KeyGenerator.getInstance("AES");
// 2.根据传入的字节数组,生成一个128位的随机源
keygen.init(128, new SecureRandom(rules.getBytes()));
// 3.生成密钥
SecretKey secretKey = keygen.generateKey();
// 4.生成Cipher对象,指定其支持AES算法
encryptCipher = Cipher.getInstance("AES");
decryptCipher = Cipher.getInstance("AES");
// 5.初始化加密对象及解密对象
encryptCipher.init(Cipher.ENCRYPT_MODE, secretKey);
decryptCipher.init(Cipher.DECRYPT_MODE, secretKey);
} public byte[] encrypt(byte[] source) throws Exception {
return encryptCipher.doFinal(source);
} public byte[] decrypt(byte[] source) throws Exception {
return decryptCipher.doFinal(source);
} public static void main(String[] args) throws Exception {
AesEntriptor aesEntriptor = new AesEntriptor("123456");
byte[] encrypt = aesEntriptor.encrypt("Napolean".getBytes());
byte[] decrypt = aesEntriptor.decrypt(encrypt);
System.out.println(new String(decrypt));
}
}

  

最新文章

  1. 应用SuperIO(SIO)和开源跨平台物联网框架ServerSuperIO(SSIO)构建系统的整体方案
  2. url中#号的作用
  3. Linux学习笔记(3)Linux常用命令之文件处理命令
  4. 从零开始搭建Docker Swarm集群
  5. 快乐的JS正则表达式(一)
  6. 常用的HTML 标签二
  7. C++中栈区 堆区 常量区
  8. 选用 get 与 post 的一些建议
  9. pl/sql developer连接远程数据库
  10. sencha touch
  11. Windows获取其他进程中Edit控件的内容
  12. 记一次网站服务器迁移(my)
  13. Extjs 3.4 生成button,并調用相同的window
  14. hpuoj回文串问题(manacher+kmp)
  15. eclipse中maven工程的创建javaweb项目
  16. codeforces--376D--376F(前缀和优化)
  17. hue集成hive访问报database is locked
  18. hdu 5113(2014北京—搜索+剪枝)
  19. 一行代码实现FMDB的CURD操作
  20. Fuck me 忘记改REDO 造成复制用户超级慢

热门文章

  1. PCIe/NVMe Soft Protocol Analyzer - 惊天发现
  2. 2017 ZSTU寒假排位赛 #7
  3. ZR#710
  4. 【分类模型评判指标 一】混淆矩阵(Confusion Matrix)
  5. C# 7 .NET / CLR / Visual Studio version requirements
  6. 安装wls报(主清单位置 "/u01/app/oracle/inventory" 无效 (无法读取/写入/执行))
  7. 【Mybatis】向MySql数据库插入千万记录 单条插入方式,用时 1h16m30s
  8. WPF学习笔记 - .Net Framework的分离存储技术
  9. Shell脚本中判断字符串是否被包含在内
  10. JPA,Hibernate,Spring Data JPA之间的关系