Java使用AES加解密

本文介绍了Java中使用AES算法进行加解密的详细步骤,包括密钥的生成、存储、获取,以及如何使用存储的密钥进行加解密操作,并提供了一个完整的加解密示例。
摘要由CSDN通过智能技术生成


Java使用AES加解密

目录

1.1生成密钥

1.2密钥的存储

1.3获取存储的密钥

1.4加解密

1.5使用存储的密钥进行加解密示例

 

AES是一种对称的加密算法,可基于相同的密钥进行加密和解密。Java采用AES算法进行加解密的逻辑大致如下:

1、生成/获取密钥

2、加/解密

 

1.1生成密钥

密钥的生成是通过KeyGenerator来生成的。通过获取一个KeyGenerator实例,然后调用其generateKey()方法即可生成一个SecretKey对象。大致逻辑一般如下:

 


  1. private SecretKey geneKey() throws Exception {  
  2.     //获取一个密钥生成器实例  
  3.     KeyGenerator keyGenerator = KeyGenerator.getInstance(ALGORITHM);  
  4.     SecureRandom random = new SecureRandom();  
  5.     random.setSeed("123456".getBytes());//设置加密用的种子,密钥  
  6.     keyGenerator.init(random);  
  7.     SecretKey secretKey = keyGenerator.generateKey();  
  8.     return secretKey;  
  9. }  

 

 

上述生成密钥的过程中指定了固定的种子,每次生成出来的密钥都是一样的。还有一种形式,我们可以通过不指定SecureRandom对象的种子,即不调用其setSeed方法,这样每次生成出来的密钥都可能是不一样的。


  1. private SecretKey geneKey() throws Exception {  
  2.     //获取一个密钥生成器实例  
  3.     KeyGenerator keyGenerator = KeyGenerator.getInstance(ALGORITHM);  
  4.     SecureRandom random = new SecureRandom();  
  5.     keyGenerator.init(random);  
  6.     SecretKey secretKey = keyGenerator.generateKey();  
  7.     return secretKey;  
  8. }  

 

 

通过KeyGenerator的init(keySize)方法进行初始化,而不是通过传递SecureRandom对象进行初始化也可以达到上面的效果,每次生成的密钥都可能是不一样的。但是对应的keySize的指定一定要正确,AES算法的keySize是128。


  1. private SecretKey geneKey() throws Exception {  
  2.     //获取一个密钥生成器实例  
  3.     KeyGenerator keyGenerator = KeyGenerator.getInstance(ALGORITHM);  
  4.     keyGenerator.init(128);  
  5.     SecretKey secretKey = keyGenerator.generateKey();  
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值