首页 > 编程语言 >nodejs中aes-128-cbc加密和解密

nodejs中aes-128-cbc加密和解密

时间:2023-02-06 20:12:20浏览次数:48  
标签:crypted cbc aes 加密 nodejs iv 128 key var

和java程序进行交互的时候,java那边使用AES 128位填充模式:AES/CBC/PKCS5Padding加密方法,在nodejs中采用对应的aes-128-cbc加密方法就能对应上,因为有使用向量(iv),所以nodejs中要用createCipheriv方法,而不是createCipher。

在这类加密和解密的计算中,最最要注意的就是中文编码问题,不然铁定采坑。我踩完坑了,把能跑的代码发上来下,运行环境nodejs 4.4.6。

var crypto = require('crypto');
 
/**
 * 加密方法
 * @param key 加密key
 * @param iv       向量
 * @param data     需要加密的数据
 * @returns string
 */
var encrypt = function (key, iv, data) {
    var cipher = crypto.createCipheriv('aes-128-cbc', key, iv);
    var crypted = cipher.update(data, 'utf8', 'binary');
    crypted += cipher.final('binary');
    crypted = new Buffer(crypted, 'binary').toString('base64');
    return crypted;
};
 
/**
 * 解密方法
 * @param key      解密的key
 * @param iv       向量
 * @param crypted  密文
 * @returns string
 */
var decrypt = function (key, iv, crypted) {
    crypted = new Buffer(crypted, 'base64').toString('binary');
    var decipher = crypto.createDecipheriv('aes-128-cbc', key, iv);
    var decoded = decipher.update(crypted, 'binary', 'utf8');
    decoded += decipher.final('utf8');
    return decoded;
};
 
var key = '751f621ea5c8f930';
console.log('加密的key:', key.toString('hex'));
var iv = '2624750004598718';
console.log('加密的iv:', iv);
var data = "Hello, nodejs. 演示aes-128-cbc加密和解密";
console.log("需要加密的数据:", data);
var crypted = encrypt(key, iv, data);
console.log("数据加密后:", crypted);
var dec = decrypt(key, iv, crypted);
console.log("数据解密后:", dec);

  运行输出结果:

加密的key: 751f621ea5c8f930
加密的iv: 2624750004598718
需要加密的数据: Hello, nodejs. 演示aes-128-cbc加密和解密
数据加密后: 7L/q8ZzHLaNI1ToA/RA9b/eznGIYtO9dhTqoo105bNtsTo/QOoCTyljNy6DvU1X+
数据解密后: Hello, nodejs. 演示aes-128-cbc加密和解密

原文地址:https://www.shuzhiduo.com/A/gGdXQngvz4/

标签:crypted,cbc,aes,加密,nodejs,iv,128,key,var
From: https://www.cnblogs.com/caiyt/p/17096560.html

相关文章

  • nodejs系列-如何用JS代码连接远程服务器并执行命令创建文件-ssh2
    ssh2是什么?SSH2clientandserver模块用纯JavaScript为node.js编写。我们可以在代码里使用它链接远端服务器,执行一些必要的操作为什么要使用ssh2?作为一名前端,我们......
  • aws云上部署vue代码+nodeJS跨域配置
    大致需求客户想要构建一个新的客户站点,前端通过Https来访问VUE界面,然后VUE跨域Https访问后端的接口服务,通过NodeJS来提供后台服务。假定是全新的服务,本文从域名申请配置、CD......
  • nodejs---执行任意js文件
    nodejs---执行任意js文件keywords:直接运行javascripttypescriptjstshello.jsconsole.log('HelloWorld!')命令行执行:nodehello.jstypescript文件(比如hello.......
  • python AES CFB 记录
    aescipher=AES.new(aeskey,AES.MODE_CFB,aesiv,segment_size=128)segment_size(integer)--(OnlyMODE_CFB).Thenumberofbitstheplaintextandciphertextarese......
  • nodejs下载
    nodejs下载地址:​​https://nodejs.org/dist/​​......
  • nodeJS+express搭建后台服务,node写后台接口
    确保电脑已安装node.新建个文件夹,准备存放服务文件,打开文件夹,按住shift右键快捷打开powershell窗口,执行命令npmiexpress然后依赖文件就安装好了   新建serve......
  • java AES加密
    1、引入maven<!--Base64编码需要--><dependency><groupId>org.apache.directory.studio</groupId><artifactId>org.apache.commons.cod......
  • 某某网站AES算法JS逆向分析(JS逆向第八期)
       时隔一周,我又回来更新了!本期继续分享JS逆向章节;今天分享的内容是某某网站的Response响应体加密,如果不够细心,甚至都不知道内容从哪里加载生成的。全程高能,在阅读的同......
  • nodejs 版本管理器 nvm
    安装过程C:\Users\GSGK\AppData\Roaming\nvm下载地址:https://github.com/coreybutler/nvm-windows/releasesnvm-setup.zip解压后,双击exe进行安装nvm-setup.exe验证......
  • nodeJS 版本控制 nvm
    nvm:https://github.com/nvm-sh/nvmnvm-windows:https://github.com/coreybutler/nvm-windows在我们的日常开发中经常会遇到这种情况:手上有好几个项目,每个项目的需求......