资源简介
对称加密AES算法,实现前后端加密解密,前端使用cryptojs.js实现,后端使用java实现

代码片段和文件信息
package com.example.common.util;
import javax.crypto.Cipher;
import javax.crypto.spec.IvParameterSpec;
import javax.crypto.spec.SecretKeySpec;
import java.security.Key;
import java.security.spec.AlgorithmParameterSpec;
import java.util.base64;
/**
* 对称加密解密AES算法
*
* @author zhaors
*/
public class AESUtils {
private static final String TRANSFORMATION = “AES/CBC/PKCS5Padding“;
private static final String ALGORITHM = “AES“;
private static final String CHARSET = “utf-8“;
/**
* 建议为16或者32位
*/
private static final String KEY = “A-16-Byte-keyVal“;
/**
* 必须16位
* 初始化向量IV不可以为32位,否则异常java.security.InvalidAlgorithmParameterException: Wrong IV length: must be 16 bytes long
*/
private static final String IV = “A-16-Byte-String“;
/**
* 加密
*
* @param context
* @return
*/
public static String encrypt(String context) {
try {
byte[] decode = context.getBytes(CHARSET);
byte[] bytes = createKeyAndIv(decode Cipher.ENCRYPT_MODE);
return base64.getEncoder().encodeToString(bytes);
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
/**
* 解密
*
* @param context
* @return
*/
public static String decrypt(String context) {
try {
base64.Decoder decoder = base64.getDecoder();
byte[] decode = decoder.decode(context);
byte[] bytes = createKeyAndIv(decode Cipher.DECRYPT_MODE);
return new String(bytes CHARSET);
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
/**
* 获取key & iv
*
* @param context
* @param opmode
* @return
* @throws Exception
*/
public static byte[] createKeyAndIv(byte[] context int opmode) throws Exception {
byte[] key = KEY.getBytes(CHARSET);
byte[] iv = IV.getBytes(CHARSET);
return cipherFilter(context opmode key iv);
}
/**
* 执行操作
*
* @param context
* @param opmode
* @param key
* @param iv
* @return
* @throws Exception
*/
public static byte[] cipherFilter(byte[] context int opmode byte[] key byte[] iv) throws Exception {
Key secretKeySpec = new SecretKeySpec(key ALGORITHM);
AlgorithmParameterSpec ivParameterSpec = new IvParameterSpec(iv);
Cipher cipher = Cipher.getInstance(TRANSFORMATION);
cipher.init(opmode secretKeySpec ivParameterSpec);
return cipher.doFinal(context);
}
/**
* 主方法测试
*
* @param args
*/
public static void main(String[] args) {
String context = “zhaors“;
System.out.println(“元数据“ + context);
String encrypt = encrypt(context);
System.out.println(“加密之后:“ + encrypt);
String decry
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 3204 2018-07-06 15:57 cryptojs\AESUtils.java
文件 191936 2016-12-14 20:00 cryptojs\crypto-js.js
文件 1255 2018-07-05 18:18 cryptojs\node_test.js
文件 2039 2018-07-05 17:42 cryptojs\test.html
目录 0 2018-07-06 15:47 cryptojs
----------- --------- ---------- ----- ----
198434 5
- 上一篇:飞机大战Java源代码
- 下一篇:javaweb学生选课系统课程设计
相关资源
- java串口通信全套完整代码-导入eclip
- jsonarray所必需的6个jar包.rar
- 三角网构TIN生成算法,Java语言实现
- java代码编写将excel数据导入到mysql数据
- Java写的cmm词法分析器源代码及javacc学
- JAVA JSP公司财务管理系统 源代码 论文
- JSP+MYSQL旅行社管理信息系统
- 推荐算法的JAVA实现
- 基于Java的酒店管理系统源码(毕业设
- java-图片识别 图片比较
- android毕业设计
- java23种设计模式+23个实例demo
- java Socket发送/接受报文
- JAVA828436
- java界面美化 提供多套皮肤直接使用
- 在线聊天系统(java代码)
- 基于Java的图书管理系统807185
- java中实现将页面数据导入Excel中
- java 企业销售管理系统
- java做的聊天系统(包括正规课程设计
- Java编写的qq聊天室
- 商店商品管理系统 JAVA写的 有界面
- JAVA开发聊天室程序
- 在linux系统下用java执行系统命令实例
- java期末考试试题两套(答案) 选择(
- JAVA3D编程示例(建模、交互)
- Java 文件加密传输
- java做的房产管理系统
- 基于jsp的bbs论坛 非常详细
- [免费]java实现有障碍物的贪吃蛇游戏
评论
共有 条评论