node-forge

之前讲过了AES-GCM模式在vue中如何加解密,使用的是node自带的crypto模块,但是会有个问题,纯html页面中无法使用node.js中的api。

这时候我们需要用到一个库:node-forge(js, vue中都可使用)

npm地址:node-forge - npm

github地址:https://github.com/digitalbazaar/forge

官方列举的可以加解密的模式:

使用

1:引入

js:

<script src ="https://unpkg.com/node-forge@1.0.0/dist/forge.min.js "></script>

vue:

安装:npm install node-forge
在需要用的地方引入:import forge from 'node-forge'

2:密钥

const keyStr = '16位/24位/32位的密钥'

// 如果跟后端搭配加解密需要和后端约定好密钥  密钥必须一致

3:加密

js

// 加密function encrypt(someBytes) {var iv =  forge.random.getBytesSync(12)  // 生成随机iv 12字节var cipher  = forge.cipher.createCipher('AES-GCM', keyStr); // 生成AES-GCM模式的cipher对象 并传入密钥cipher.start({iv: iv});cipher.update(forge.util.createBuffer(forge.util.encodeUtf8(someBytes)));cipher.finish();var encrypted = cipher.output;var tag = cipher.mode.tag;return btoa(iv+encrypted.data+tag.data)}

vue

export function encrypt(word) {var iv = forge.random.getBytesSync(12) // 生成随机iv 12字节var cipher = forge.cipher.createCipher('AES-GCM', keyStr) // 生成AES-GCM模式的cipher对象 并传入密钥cipher.start({iv: iv})cipher.update(forge.util.createBuffer(forge.util.encodeUtf8(word)))cipher.finish()var encrypted = cipher.outputvar tag = cipher.mode.tagreturn window.btoa(iv + encrypted.data + tag.data)
}

4:解密

js

function decrypt(someBytes) {someBytes = atob(someBytes)const iv = someBytes.slice(0, 12)const tag = someBytes.slice(-16)const data = someBytes.slice(12, someBytes.length - 16)var decipher = forge.cipher.createDecipher('AES-GCM', keyStr)decipher.start({iv: iv,tag: tag});decipher.update(forge.util.createBuffer(data))const pass = decipher.finish()if (pass) {return decipher.output.toString()}}

vue

export function decrypt(datamsg) {datamsg = window.atob(datamsg)const iv = datamsg.slice(0, 12)const tag = datamsg.slice(-16)const data = datamsg.slice(12, datamsg.length - 16)var decipher = forge.cipher.createDecipher('AES-GCM', keyStr)decipher.start({iv: iv,tag: tag})decipher.update(forge.util.createBuffer(data))const pass = decipher.finish()if (pass) {return decipher.output.toString()}
}

5:举个栗子

var str = '我是密码123.!'
var en = encrypt(str)
console.log(en)
var de = decrypt(en)
console.log(de)

aes-gcm模式前端加解密(html页面 js)——使用node-forge库相关推荐

  1. AES实现后端参数加解密

    AES实现后端参数加解密 前言 介绍 Start 引入依赖 编写AES加解密工具类 自定义注解 编写请求数据解密 ControllerAdvice 编写返回数据加密 ControllerAdvice ...

  2. base64前端加解密方法

    18.base64前端加解密方法 1.添加方法js方法 const Base64 = {//加密encode(str) {if (str===undefined || str === "&q ...

  3. rsa加解密 --- jsencrypt.min.js --- 支持长字符串分段加解密

    前端 + rsa加解密 + jsencrypt.min.js–(新增超长字符分段加解密) 分享2种,分段 和 不分段 加解密 --话不多说,直接上代码!~ 最终效果: 首先引入2个js <scr ...

  4. angular和JAVA实现aes、rsa加密解密,前后端交互,前端加解密和后端JAVA加解密实现

    今天实现了下AES和RSA加密解密,主要的功能是对前后端交互数据进行加密解密,为什么要用到两个算法呢,首先RSA默认的话加密长度是有限的100多个byte吧大约,并且需要公钥私钥,而AES加密没有限制 ...

  5. 使用AES加密进行前端加、解密

    什么是AES对称加密? 1.aes对称加密是最快速.简单的一种加密方式,加密(encryption).解密(decryption)使用的是同一套密钥(secret key): 2.aes(advanc ...

  6. 【crypto】基于crypto.js的web前端加解密系统实现

    文章目录 一.概念介绍 1.1 crypto.js介绍 1.2 加密 / 哈希 / 编码 1.2.1 加密/解密 1.2.2 散列/哈希 1.2.3 BASE64编解码 二.加解密思想(以md5为例) ...

  7. JS判断访问设备(userAgent)加载不同页面 JS判断客户端操作系统类型(platform)

    //平台.设备和操作系统var system ={win : false,mac : false,xll : false};//检测平台var p = navigator.platform;syste ...

  8. java加密工作模式None_java加解密算法--对称加密工作模式

    对称加密又分为分组加密和序列密码. 分组密码,也叫块加密(block cyphers),一次加密明文中的一个块.是将明文按一定的位长分组,明文组经过加密运算得到密文组,密文组经过解密运算(加密运算的逆 ...

  9. 前端CryptoJS和Java后端数据互相加解密(AES)

    目录 一.序言 二.关于前端CryptoJS 1.CryptoJS简单介绍 2.加密和填充模式选择 3.前端AES加解密示例 (1) cryptoutils工具类 (2) 测试用例 (3) 加解密后输 ...

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

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

最新文章

  1. 《深度学习,统计学习,数学基础》人工智能算法工程师手册:程序员写的AI书,50 章一网打尽...
  2. python函数太多_numpy Loadtxt函数似乎消耗了太多内存
  3. 迷你linux设备,ComputeLab发布MintBox迷你PC:专为Linux系统玩家打造
  4. 语音识别(四)——DTW, Spectrogram, Cepstrum Analysis
  5. char截取字符串_字符串的排列(滑动窗口)
  6. oracle 去除英文字母,请教:如何去掉字段中的所有标点符号(包括全角的和半角的)...
  7. 套接字初始化失败问题
  8. Java和python哪个好,学哪个有用。
  9. 暴风影音- C++研发工程师(windows方向-在线视频)
  10. python开发贴吧_python爬虫-贴吧
  11. 查看服务器显卡GPU型号
  12. POJ 1625 Censored!
  13. Anki 学习排行榜
  14. 干货|机器学习-稀疏矩阵的处理
  15. 阿里巴巴九大美女高管个个身价上亿,你最佩服谁?
  16. 论文精读 | 语义SLAM综述:现状回顾问题分析未来趋势!
  17. 2021-2026年中国PVC行业产销需求与投资预测分析报告
  18. midi是音乐与计算机相结合的产物,2008年江苏省“专转本”计算机应用基础真题与解答.doc...
  19. 【开发工具】【readelf】查看ELF格式文件工具(readelf)的使用
  20. 郑清2461 我是签到题

热门文章

  1. 计算机常见故障判断与排除,计算机常见故障的诊断与排除PPT课件.ppt
  2. 二次量子化与量子计算化学
  3. 愿为双鸿鹄,奋翅起高飞
  4. CuteFTP9.0安装,破解,服务器传递文件。
  5. java wed汽车4s店销售管理系统
  6. 都9012年了!假借区块链敛财骗局仍一桩接一桩
  7. javaee实训报告总结_javaee实习报告.doc
  8. 小程序 canvas旋转文字
  9. html 左侧居中对齐,HTML的居中对齐
  10. 安卓handler机制