aes256 java_用Java进行AES256

本文展示了如何在Java中使用AES256进行加密和解密操作,包括导入必要的类库如BouncyCastleProvider,处理Java默认只支持128位密钥的限制,以及使用AES/ECB/PKCS7Padding算法。代码中定义了两个静态方法Aes256Encode和Aes256Decode,分别用于加密和解密字符串。为了使用AES256,需要下载并安装Java Cryptography Extension (JCE) Unlimited Strength Jurisdiction Policy Files来解除密钥长度的限制。
摘要由CSDN通过智能技术生成

主要代码如下:

importjava.security.Security;

importjavax.crypto.Cipher;

importjavax.crypto.spec.SecretKeySpec;

importorg.bouncycastle.jce.provider.BouncyCastleProvider;

publicclassEncrypt {

publicstaticbooleaninitialized =false;

publicstaticfinalString ALGORITHM ="AES/ECB/PKCS7Padding";

/**

* @param  String str  要被加密的字符串

* @param  byte[] key  加/解密要用的长度为32的字节数组(256位)密钥

* @return byte[]  加密后的字节数组

*/

publicstaticbyte[] Aes256Encode(String str,byte[] key){

initialize();

byte[] result =null;

try{

Cipher cipher = Cipher.getInstance(ALGORITHM, "BC");

SecretKeySpec keySpec = newSecretKeySpec(key,"AES");//生成加密解密需要的Key

cipher.init(Cipher.ENCRYPT_MODE, keySpec);

result = cipher.doFinal(str.getBytes("UTF-8"));

}catch(Exception e){

e.printStackTrace();

}

returnresult;

}

/**

* @param  byte[] bytes  要被解密的字节数组

* @param  byte[] key    加/解密要用的长度为32的字节数组(256位)密钥

* @return String  解密后的字符串

*/

publicstaticString Aes256Decode(byte[] bytes,byte[] key){

initialize();

String result = null;

try{

Cipher cipher = Cipher.getInstance(ALGORITHM, "BC");

SecretKeySpec keySpec = newSecretKeySpec(key,"AES");//生成加密解密需要的Key

cipher.init(Cipher.DECRYPT_MODE, keySpec);

byte[] decoded = cipher.doFinal(bytes);

result = newString(decoded,"UTF-8");

}catch(Exception e){

e.printStackTrace();

}

returnresult;

}

publicstaticvoidinitialize(){

if(initialized)return;

Security.addProvider(newBouncyCastleProvider());

initialized = true;

}

}

可以看到,代码开头要先import Java Cryptography Extension (JCE)中的两个类——加/解密类Cipher和密钥类SecretKeySpec,以及BouncyCastle的一个开源加/解密类库中的加/解密算法提供者类BouncyCastleProvider。

PC上的Java里面只有"AES/ECB/PKCS5Padding"算法,没有"AES/ECB/PKCS7Padding"算法。故需要引入BouncyCastle的库,并给Cipher.getInstance方法传入参数"BC"来指定Java使用这个库里的加/解密算法。BouncyCastle的加/解密类库的下载地址:http://www.bouncycastle.org/latest_releases.html

在这段代码可以运行之前,还有一个问题需要解决。Java本身限制密钥的长度最多128位,而AES256需要的密钥长度是256位,因此需要到Java官网上下载一个Java Cryptography Extension (JCE) Unlimited Strength Jurisdiction Policy Files。在Java

SE的下载页面下面的Additional Resources那里会有下载链接。下载后打开压缩包,里面有两个jar文件。把这两个jar文件解压到JRE目录下的lib/security文件夹,覆盖原来的文件。这样Java就不再限制密钥的长度了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值