aes256 java_用Java进行AES256
主要代码如下:
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就不再限制密钥的长度了。
aes256 java_用Java进行AES256相关推荐
- 【AES256】Java实现AES256加解密
AES256加解密比较常见,这里简单记录以供参考! 一.下载 官方JDK默认支持AES-128,在 1.8.0_151 和 1.8.0_152 版本之前,需要从Oracle官网下载安全JAR包方可支持 ...
- aes 256 cbc java,AES256加解密java语言实现
AES256加解密java语言实现 写在前面 基于项目安全性需要,有时候我们的项目会使用AES 256加解密算法.以下,是针对实现AES256 Padding7加密算法实现的关键步骤解析以及此过程遇到 ...
- aes256加密java_使用Java和JCEKS进行AES-256加密
aes256加密java 总览 由于最近爱德华·斯诺登 ( Edward Snowden)发布了文件,以及针对JC Penny , Sony和Target等在线商业商店的黑客攻击激增,安全性已成为近年 ...
- java aes256 加密_JAVA中使用AES256加密
前言:java默认支持128位加密规范,如果想支持256位加密规范,就需要使用无限制JCE策略文件,而现在Android端AES256的加密填充方式一般是PKCS7Padding,JAVA支持PKCS ...
- java使用AES256解密
网上关于java用AES加密解密的文章有很多,我这里只用到解密(加密是服务器那边做^_^),所以更简洁一些: public class AES256Utils {private static fina ...
- 搭建java_搭建java开发环境
① 第一步.下载jdk安装包. jdk官方下载网址: http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-21 ...
- 深入java_深入Java Final
JAVA关键字final用于修饰数据.方法或类,通常意味着"无法改变的",既数据不能改变,方法不能覆盖,类不能继承.一般采用final有两种原因:设计和效率.而随着JAVA版本的更 ...
- 圆通招java_圆通java程序员面试经验|面试题 - 职朋职业圈
面试过程: 你所写的经历项目涉及到的东西,你在项目中的职责开发了哪部分:结构体对齐相关问题,怎样避免死锁,怎样在数据库添加成员 序列化 守护进程 JAVA的垃圾回收机制然后深入探讨了下这个 I+1其他 ...
- cloning java_深入浅出Java中的clone克隆方法,写得太棒了!
作者:张纪刚 blog.csdn.net/zhangjg_blog/article/details/18369201/ 2019-03-24 10:33:04 Java中对象的创建 clone 顾名思 ...
最新文章
- Python 之 Numpy (一)属性
- 【Android 安装包优化】资源打包配置 ( resources.arsc 资源映射表 | 配置国际化资源 )
- vm ububtu突然没网
- CSDN博客文章写作技巧
- mysql OA_mysql优化工具—mysqloa
- 数据结构与算法专题——第一题 Bitmap算法
- 【英语学习】【WOTD】 putsch 释义/词源/示例
- 大动作!华为海思注册资本从6亿增加到20亿
- 谈一下ACM的入门书籍及方法
- 基于Opencv3.0对图像进行透视变换
- 爬梯:Docker全解析(二)
- 谷歌浏览器设置默认Flash
- Skype无法显示登录界面
- 35岁技术人如何转型做管理?mysql删除数据语句
- 计算机考研400分以上,考研400分是什么概念?
- Harbor安装(待补充)
- 计算机c盘那个是系统文件夹,C盘有哪些文件可以删除?可以手动删除的几个C盘中的文件夹...
- Gorilla源码分析之gorilla/mux源码分析
- description标签如何正确使用?
- 微信android字体颜色,如何用微信打出颜色各异的字