用Java进行AES256-ECB-PKCS7Padding加密
来源:互联网 发布:电视猫破解阿里云os 编辑:程序博客网 时间:2024/05/16 15:08
主要代码如下:
- import java.security.Security;
- import javax.crypto.Cipher;
- import javax.crypto.spec.SecretKeySpec;
- import org.bouncycastle.jce.provider.BouncyCastleProvider;
- public class Encrypt {
- public static boolean initialized = false;
- public static final String ALGORITHM = "AES/ECB/PKCS7Padding";
- /**
- * @param String str 要被加密的字符串
- * @param byte[] key 加/解密要用的长度为32的字节数组(256位)密钥
- * @return byte[] 加密后的字节数组
- */
- public static byte[] Aes256Encode(String str, byte[] key){
- initialize();
- byte[] result = null;
- try{
- Cipher cipher = Cipher.getInstance(ALGORITHM, "BC");
- SecretKeySpec keySpec = new SecretKeySpec(key, "AES"); //生成加密解密需要的Key
- cipher.init(Cipher.ENCRYPT_MODE, keySpec);
- result = cipher.doFinal(str.getBytes("UTF-8"));
- }catch(Exception e){
- e.printStackTrace();
- }
- return result;
- }
- /**
- * @param byte[] bytes 要被解密的字节数组
- * @param byte[] key 加/解密要用的长度为32的字节数组(256位)密钥
- * @return String 解密后的字符串
- */
- public static String Aes256Decode(byte[] bytes, byte[] key){
- initialize();
- String result = null;
- try{
- Cipher cipher = Cipher.getInstance(ALGORITHM, "BC");
- SecretKeySpec keySpec = new SecretKeySpec(key, "AES"); //生成加密解密需要的Key
- cipher.init(Cipher.DECRYPT_MODE, keySpec);
- byte[] decoded = cipher.doFinal(bytes);
- result = new String(decoded, "UTF-8");
- }catch(Exception e){
- e.printStackTrace();
- }
- return result;
- }
- public static void initialize(){
- if (initialized) return;
- Security.addProvider(new BouncyCastleProvider());
- 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就不再限制密钥的长度了。
0 0
- 用Java进行AES256-ECB-PKCS7Padding加密
- 用Java进行AES256-ECB-PKCS7Padding加密
- 加密算法AES256的ECB-PKCS7Padding加密
- JAVA下AES256加密
- IOS AES 128 ECB PKCS7Padding 16进制加密解密
- IOS AES 128 ECB PKCS7Padding 16进制加密解密
- IOS 使用AES/ECB/PKCS7Padding 加密、解密数据
- iOS—AES加密(128 CBC/ECB NoPadding/PKCS7Padding)
- ios 16进制加密 AES 128 ECB PKCS7Padding
- Java AES256加密解密实现
- Java AES256加密解密实现
- openssl aes256 ecb PKCS7
- AES/ECB/PKCS5Padding/PKCS7Padding 128位密钥(带密钥补位功能)加密解密
- java.security.NoSuchAlgorithmException: Cannot find any provider supporting DES/ECB/PKCS7Padding
- java PKCS7Padding 加密Cannot find any provider supporting AES/CBC/PKCS7Padding 解决办法
- Java AES256
- JavaScript的CryptoJS AES/ECB/NoPadding加密,可与JAVA objective-c 进行同步加解密
- 在java项目中使用AES256 CBC加密
- Service启动Dialog及小米手机无法弹出Dialog问题
- 书籍推荐
- the number of position
- 模仿微信图片点击全屏效果 (2)
- mac下的android studio中离线更新gradle
- 用Java进行AES256-ECB-PKCS7Padding加密
- ORA-22835 缓冲区对于 CLOB 到 CHAR 转换或 BLOB 到 RAW 转换而言太小
- 安装 Ruby 环境 -for-MAC
- 新手理解@classmethod及@staticmethod
- SGU 107 987654321 problem(打表)
- 使用VS2010创建MFC ActiveX工程项目
- 在滚动视图上添加子视图(UIScrollView)
- 混合编程的实践与思考
- 欢迎使用CSDN-markdown编辑器