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-ecbaes-256-cbc

拓展阅读:AES加密算法的详细介绍与实现

        来源:CSDN

        作者:TimeShatter

最新文章

  1. Spring MVC学习
  2. drawable微技巧以及layout的小知识
  3. 【分享】图解Windows Server 2012 R2 配置IIS 8全过程
  4. ShellExecute调用另外一个进程(demo为一个控制led的一段代码)
  5. 线程让出实验【RT-Thread学习笔记 4】
  6. django 项目的文件说明
  7. Android四大组件之Activity详解——传值和获取结果
  8. raw格式镜像文件压缩并转换为qcow2格式
  9. Struct是干什么的
  10. angular入门系列教程1
  11. CSS 初体验之Line-height
  12. js 时间戳转为日期格式
  13. 【BZOJ3944】Sum(杜教筛)
  14. 学习MySQL过程中的随笔一
  15. Linux:Day5 shell编程初步、grep
  16. 【css技能提升】完美的 Sticky Footer 布局
  17. input 输入框 change 事件和 blur 事件
  18. javascript进阶笔记(2)
  19. xlsx 库 知识点
  20. sqlserver清除缓存(转载)

热门文章

  1. rails debug
  2. 最新App Store审核指南与10大被拒理由
  3. git创建项目的两种方式
  4. SDUT 2133 数据结构实验之栈三:后缀式求值
  5. JS高级调试技巧:捕获和分析 JavaScript Error详解
  6. python循环次数的使用
  7. matlab高亮显示选中的变量
  8. JS判断数字、中文、小数位数
  9. Struts2与ServletAPI解耦
  10. Go丨语言package github.com/Go-SQL-Driver/MySQL: exec: "git": executable file not found in %PATH%解决方法