Nodejs与Java通用AES加解密
一、nodejs加解密工具类:
/**
* AES util
*/
const CryptoJS = require('crypto-js')
export const AES = {//加密encode: (params) => {let { data, param, key } = paramslet result = JSON.parse(JSON.stringify(data))param.forEach(ele => {let data = result[ele]key = CryptoJS.enc.Utf8.parse(key)let iv = keylet encrypted = CryptoJS.AES.encrypt(data,key,{iv: iv,mode: CryptoJS.mode.CBC,padding: CryptoJS.pad.ZeroPadding})result[ele] = encrypted.toString();})return result},decode: (params) => {let { data, param, key } = paramslet result = JSON.parse(JSON.stringify(data))param.forEach(ele => {let data = result[ele]key = CryptoJS.enc.Utf8.parse(key)let iv = keylet decrypt = CryptoJS.AES.decrypt(data, key, {iv: iv,mode: CryptoJS.mode.CBC,padding: CryptoJS.pad.ZeroPadding});let decryptedStr = decrypt.toString(CryptoJS.enc.Utf8);result[ele] = decryptedStr.toString();})return result}
}
- 使用方法:
(1)加密:
let user = AES.encode({data: {//要加密的数据username:'123456',password:'123456'},key: '1234567887654321',//加密的keyparam: ['password']//要加密哪些属性
})
(2)解密:
let user = AES.decode({data: {//要解密的数据username:'123456',password:'lBTqrKS0kZixOFXeZ0HRng=='},key: '1234567887654321',param: ['user']//要解密哪些属性
})
二、Java解密:
private static String decryptAES(String data, String pass) throws Exception {Cipher cipher = Cipher.getInstance("AES/CBC/NOPadding");SecretKeySpec keyspec = new SecretKeySpec(pass.getBytes(), KEY_ALGORITHM);IvParameterSpec ivspec = new IvParameterSpec(pass.getBytes());cipher.init(Cipher.DECRYPT_MODE, keyspec, ivspec);byte[] result=cipher.doFinal(Base64.decode(data.getBytes(CharsetUtil.UTF_8)));return new String(result, CharsetUtil.UTF_8);
}
- 使用方法:
try {String s = decryptAES("lBTqrKS0kZixOFXeZ0HRng==", "1234567887654321");System.out.println(s);
} catch (Exception e) {e.printStackTrace();
}
三、Java加密:
private static String encryptAES(String data,String pass) throws Exception {byte[] raw = pass.getBytes("utf-8");SecretKeySpec skeySpec = new SecretKeySpec(raw, "AES");Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");IvParameterSpec iv = new IvParameterSpec(pass.getBytes());cipher.init(Cipher.ENCRYPT_MODE, skeySpec, iv);byte[] encrypted = cipher.doFinal(data.getBytes());return new Base64().encode(encrypted);
}
- 使用方法:
String e=encryptAES("123456","1234567887654321");
System.out.println(e);
<wiz_tmp_tag id="wiz-table-range-border" contenteditable="false" style="display: none;">
转载于:https://www.cnblogs.com/unuai/p/cd8ff80ca06154bbed19e16d1c800283.html
Nodejs与Java通用AES加解密相关推荐
- Java使用AES加解密
Java使用AES加解密 目录 1.1生成密钥 1.2密钥的存储 1.3获取存储的密钥 1.4加解密 1.5使用存储的密钥进行加解密示例 AES是一种对称的加密算法,可基于相同的密钥进行加密和解密.J ...
- Java实现aes加解密
pom文件的依赖 <!-- https://mvnrepository.com/artifact/org.apache.commons/commons-lang3 --> <depe ...
- Java 实现 AES 加解密
毕业课题中需要使用加解密算法,要求加解密前后的数据长度不会变化,查了一些资料,发现可以采用AES加密的CFB跟OFB模式是无填充的模式,可以保持加解密前后数据的长度相等.下面上代码: import j ...
- Java笔记-AES加解密(PKCS7padding可用)
如下代码: package cn.it1995.tool;import org.apache.tomcat.util.codec.binary.Base64; import sun.misc.BASE ...
- Web前后端笔记-vue cli及java进行AES加解密
这里我直接贴代码了. vue cli中,要先导入 npm install crypto-js vue代码如下: import axios from 'axios' import cryptoJS fr ...
- Linux下运行java DES AES加解密
2019独角兽企业重金招聘Python工程师标准>>> DES java源代码如下: import java.security.InvalidKeyException; import ...
- 记一次Java AES 加解密 对应C# AES加解密 的一波三折
最近在跟三方对接 对方采用AES加解密 作为一个资深neter Ctrl CV 是我最大的优点 所以我义正言辞的问他们要了demo java demo代码: public class EncryptD ...
- Java code lib aes 加解密
Java aes 加解密 /*** Created by LvJianwei on 2018/2/8.*/import javax.crypto.Cipher; import javax.crypto ...
- ios java aes_PHP7 AES加密解密函数_兼容ios/andriod/java对等加解密
**PHP7.0 7.1 7.2 7.3 AES对等加解密类 函数文件_兼容ios/andriod/java等** 由于新项目规划要求使用PHP7.2开发环境,但在部分新系统中仍需使用AES加解密方式 ...
- java aes 工具类_Java中的AES加解密工具类:AESUtils
本人手写已测试,大家可以参考使用 package com.mirana.frame.utils.encrypt; import com.mirana.frame.constants.SysConsta ...
最新文章
- jstl java_JSTL-Java-Baby-51CTO博客
- 思科数据中心Nexus 3000
- 开发者如何快速精简容器云镜像?| 技术头条
- Spring Cache 实战:兼容所有缓存中间件!
- webService简单入门实战(一)
- 完全卸载go语言编译器
- java hashtable 数据结构_java Hashtable底层原理是怎样的?数据结构包括什么?
- 手机+PC电脑如何使用油猴插件和油猴脚本?
- 计算机怎么通过网线共享网络,怎样用一根网线联接两台电脑实现网络共享?
- 飞行汽车能顺利上天吗?
- 幼儿园科学室创设特点
- Working Practice-设置免打扰时间
- AS(android studio) 添加第三方库时报,Error: Failed to resolve: com.github Affected Modules 解决办法
- 计算机专业对应的职业群有,[计算机硬件及网络]7k专业与职业群.ppt
- 微信公众平台开发培训
- 题解-hzy loves segment tree I
- androidTv获取TvProvider频道数据,播放Dvb的视频
- IDEA插件系列(87):Base64 image encoder插件——以base64编码的形式查看图像
- 1+x2022年9月16日实操题答案
- 二维码这把利刃,产品应该用到极致
热门文章
- windows 编写的硬件驱动_黑科技or大势所趋?谈谈手机GPU驱动升级那点事
- mongodb 3.4 安装_【云服务器Centos7.x建站】MongoDB 3.4安装、使用、错误总结
- free mybatis 不生效_Mybatis非空判断没有生效
- 【洛谷P3366】最小生成树(kruskal模版题+prim链式加边)
- 算法:单词匹配290. Word Pattern
- 极客大学架构师训练营 毕业典礼 奉献优秀架构师升级攻略
- 易筋SpringBoot 2.1 | 第十篇:SpringBoot使用thymeleaf入门
- python中的怎么用,python中怎么用#号
- this conn php,测试connect.php文件出现问题
- jsp语法 --模板元素,表达式,脚本片段,声明,注释