在用nodejs开发后台的时候,为了安全的需要,经常会有加密的需求,对前端传入的图片进行AES加密后存储,然后在前端调用的时候,对图片进行解密,并返回Base64编码格式的图片。

Crypto-JS这个库可以实现大多数的加密方式,使用npm install crypto-js 命令进行安装,但官网给出的文档却不够详细,用起来存在很多的坑,在用AES方式加密的时候,发现每次加密的结果都不一样,官网给的例子是这样的

CryptoJS

但是每次调用的结果却不一致,我的电脑效果如下:

var 

如果直接在内存中进行保存,还能解密出原文

var 

CryptoJS使用AES加密与解密后返回的均是一个对象格式,需要转换成字符串才能明文显示,解密后需要使用CryptoJS.enc.Utf8.stringify()转换成utf8编码的字符串。

但是如果将加密后的结果存放在硬盘中,因为每次加密的结果不一样,就不能解密出原文件内容了,最开始我的加密程序是这么写的

var 

解密部分:

fs

解密后,发现不能解密原文件,研究了一下AES加密的原理及CryptoJS的文档,由几下几点需要注意

  1. AES加密分为AES-128,AES-192,AES-256三种方法;
  2. 选用哪种方法取决于密钥的长度,如果密钥的长度为128位,则会使用AES-128进行加密;
  3. 如果密钥不符合128,192或256,则会按256处理,缺少的位数自动补全;

基于此,只需要确定密钥即可,更改后的代码如下:

var 

这样就能成功解密了。

js aes加密_nodejs中使用Crypto-JS对图片进行加解密相关推荐

  1. [crypto]-01-对称加解密AES原理概念详解

    1.对称加解密 术语:P是明文,C是密文,K是密钥,E是加密算法,D是解密算 (1).常用的对称加解密有哪些? (2).加解密的模式 [ecb]这种模式是将整个明文分成若干段相同的小段,然后对每一小段 ...

  2. [crypto]-02-非对称加解密RSA原理概念详解

    说明:本文使用的数据来自网络,重复的太多了,也不知道哪篇是原创. 算法原理介绍 step 说明 描述 备注 1 找出质数 P .Q - 2 计算公共模数 N = P * Q - 3 欧拉函数 φ(N) ...

  3. Base64 混淆加密+迭代次数,Base64前后端加解密不一致、Base64 js加解密结果与java加解密结果不一致,Base64中文加密乱码

    Table of Contents 概述 一.js加密,java解密 1.js加密 1.中文字符串加密 2.英文等字符串加密 3.中文字符串混淆.迭代加密 4.英文等字符串混淆.迭代加密 5.JSON ...

  4. android中使用jni对字符串加解密实现分析

    android中使用jni对字符串加解密实现分析 近期项目有个需求.就是要对用户的敏感信息进行加密处理,比方用户的账户password,手机号等私密信息.在java中,就对字符串的加解密我们能够使用A ...

  5. js aes加密_某高考咨询网js逆向分析笔记

    一.某高考资讯网逆向分析 某网站的js加密分析,安全签名signsafe + HmacSHA1 + AES 一年前分析过网站数据还没有加密,最近需要获取新的数据发现原先的爬虫失效,请求和响应都经过加密 ...

  6. 数据AES加密安全传输之前端JS加密解密

    AES(Advanced Encryption Standard)是一种对称加密方式,旨在取代DES成为广泛使用的标准.我在前端实现关键数据报文加密时采用了该加密方式. 我使用的AES加密架包是cry ...

  7. python爬虫js逆向加密,Web爬虫处理参数js加密、js混淆、js逆向

    中国空气质量在线监测平台(https://www.aqistudy.cn/html/city_detail.html)在众多的练习中,关闭了前台数据信息的展示,也就是说现在网页是这样的: 但我们主要学 ...

  8. php 输出图片给js,如何在php中利用croppic.js对图片进行剪切并上传

    如何在php中利用croppic.js对图片进行剪切并上传 发布时间:2021-01-30 16:41:02 来源:亿速云 阅读:92 作者:Leah 这篇文章将为大家详细讲解有关如何在php中利用c ...

  9. 【Bcrypt+AES】 Vue+Java前后端分离信息加解密详解和问题解决

    文章目录 1.简单介绍Bcrypt[单向hash] 2.登录服务:使用Bcrypt加密和验证 2.1 Vue前端使用Bcrypt加密 2.2 SpringBoot后端使用Bcrypt验证密码 3.简单 ...

最新文章

  1. spark学习-74-源代码:Endpoint模型介绍(6)-Endpoint的消息的接收
  2. mysql 主从 索引_Mysql繁忙主从库在线修改表结构与添加索引问题
  3. python深度学习库keras——安装
  4. Rickie的软件测试学习笔记-第四周
  5. iphone型号表_iPhone手机型号信息大全 (最新)
  6. php读取带分隔符的txt文件,Pandas中文手册
  7. Excel批量向下填充不连续的空白单元格工具
  8. 使用liteide开发go遇到的问题
  9. 彻底删除oracle数据库
  10. 体育用品商城小程序开发功能
  11. 如何从用户旅程图中挖掘差异化需求?
  12. 常见视频文件格式详解
  13. 时间序列预测 深度学习_从时间序列到深度学习的销售预测
  14. 移除联想M5210阵列卡(3650M5)的缓存模块以开启JBOD模式
  15. 杭州拒绝车辆“带病”上路 OBD在线接入实现排放动态监管
  16. matlab狄利克雷函数,数论入门1——莫比乌斯函数,欧拉函数,狄利克雷卷积,线性筛,莫比乌斯反演,杜教筛...
  17. 红豆 2022年3月16日
  18. 【Linux】Nvidia显卡驱动安装教程
  19. 专访宜信CTO向江旭:技术应当服务于场景,AI天生适合金融业
  20. php直播pk规则,主播参加直播间PK的出发点是什么,要达到什么样的目的?

热门文章

  1. linux虚拟机克隆
  2. hbase 中的LSM树存储引擎
  3. 练习:每一分钟产生一个文件,保存本分钟内所有数字之和。
  4. leetcode 406. Queue Reconstruction by Height | 406. 根据身高重建队列(Java)
  5. 【Redis】CentOS7下redis的安装+supervisor管理+允许远程访问+测试部署效果
  6. 汇编语言 段前缀的使用 复制内存单元数据到指定位置
  7. CentOS 6 安装Hadoop 2.6 (二)配置Hadoop
  8. unique函数_Office 365函数新世界:动态数组
  9. AlphaGo:人工智能与深度学习
  10. poj 1830 开关问题