Node.js 内置模块crypto加密模块(2) AES
2024-10-13 06:03:10
AES:高级加密标准 ( Advanced Encryption Standard )
AES是一种对称加密算法:加密需要密钥,且加密密钥和解密密钥相同
下面是AES加密的Node实现:
"use strict"; const crypto = require("crypto"); //封装使用AES加密的方法 function aesEncrept(data, key){ //实例化一个cipher加密对象,使用aes192进行加密,key作为密钥 const cipher = crypto.createCipher("aes192",key); //使用cipher对data进行加密,源数据类型为utf-8,输出数据类型为hex let crypted = cipher.update(data, "utf-8", "hex"); crypted += cipher.final("hex"); return crypted; } //封装对应的AES解密方法 function aesDecrept(encrepted, key) { //实例化一个decipher解密对象,使用aes192进行解密,key作为密钥 const decipher = crypto.createDecipher("aes192", key); //使用decipher对encrepted进行解密,源数据类型为hex,输出数据类型为utf-8 let decrypted = decipher.update(encrepted, "hex", "utf-8"); decrypted += decipher.final("utf-8"); return decrypted; } //需要加密的数据 let data = "This is what needs to be encrepted"; //AES加密的密钥 let keyword = "This is the key"; //使用自定义的aesEncrept方法进行加密 let encrepted = aesEncrept(data, keyword); //使用自定义的aesDecrept方法对加密数据进行解密 let decrepted = aesDecrept(encrepted, keyword); console.log( "原始数据:" + data ); console.log( "经AES加密后:" + encrepted ); console.log( "经相应的解密后:" + decrepted );
注:
1.update方法只能对源数据的前16位进行加密,对加密数据的前32位进行解密;
2.final方法就是解决上面的缺陷,可以对剩余的数据进行加密/解密;
所以才有了下面的这个写法:
let decrypted = decipher.update(encrepted, "hex", "utf8");
decrypted += decipher.final("utf-8");
目的就是为了对全部的数据进行加密/解密
3.AES加密算法除了aes192
外,还有aes-128-ecb
,aes-256-cbc
等
拓展阅读:AES加密算法的详细介绍与实现
来源:CSDN
作者:TimeShatter
最新文章
- Spring MVC学习
- drawable微技巧以及layout的小知识
- 【分享】图解Windows Server 2012 R2 配置IIS 8全过程
- ShellExecute调用另外一个进程(demo为一个控制led的一段代码)
- 线程让出实验【RT-Thread学习笔记 4】
- django 项目的文件说明
- Android四大组件之Activity详解——传值和获取结果
- raw格式镜像文件压缩并转换为qcow2格式
- Struct是干什么的
- angular入门系列教程1
- CSS 初体验之Line-height
- js 时间戳转为日期格式
- 【BZOJ3944】Sum(杜教筛)
- 学习MySQL过程中的随笔一
- Linux:Day5 shell编程初步、grep
- 【css技能提升】完美的 Sticky Footer 布局
- input 输入框 change 事件和 blur 事件
- javascript进阶笔记(2)
- xlsx 库 知识点
- sqlserver清除缓存(转载)
热门文章
- rails debug
- 最新App Store审核指南与10大被拒理由
- git创建项目的两种方式
- SDUT 2133 数据结构实验之栈三:后缀式求值
- JS高级调试技巧:捕获和分析 JavaScript Error详解
- python循环次数的使用
- matlab高亮显示选中的变量
- JS判断数字、中文、小数位数
- Struts2与ServletAPI解耦
- Go丨语言package github.com/Go-SQL-Driver/MySQL: exec: ";git";: executable file not found in %PATH%解决方法