java nodejs aes_Nodejs与Java通用AES加解密

本文介绍了如何在Node.js和Java之间进行AES加密解密操作,以实现数据的安全交换。提供了Node.js的AES加密解密工具类及Java端的解密和加密方法,并展示了具体的使用示例。
摘要由CSDN通过智能技术生成

一、nodejs加解密工具类:

/**

* AES util

*/

const CryptoJS = require('crypto-js')

export const AES = {

//加密

encode: (params) => {

let { data, param, key } = params

let result = JSON.parse(JSON.stringify(data))

param.forEach(ele => {

let data = result[ele]

key = CryptoJS.enc.Utf8.parse(key)

let iv = key

let 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 } = params

let result = JSON.parse(JSON.stringify(data))

param.forEach(ele => {

let data = result[ele]

key = CryptoJS.enc.Utf8.parse(key)

let iv = key

let 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',//加密的key

param: ['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);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值