默认加解密方式

'use strict';const express = require('express')
const bodyParser = require('body-parser')
var crypto = require('crypto');
var NodeRSA = require('node-rsa');// 创建服务器
const app = express()// 初始化 bodyParser
app.use(bodyParser.urlencoded({ extend: false }));
app.use(bodyParser.json());// aes 加密解密
function aesEncrypt(data, key) {const cipher = crypto.createCipher('aes-128-cbc', key);var crypted = cipher.update(data, 'utf8', 'hex');crypted += cipher.final('hex');return crypted;
}
function aesDecrypt(encrypted, key) {const decipher = crypto.createDecipher('aes-128-cbc', key);var decrypted = decipher.update(encrypted, 'hex', 'utf8');decrypted += decipher.final('utf8');return decrypted;
}// rsa 加密解密
const key = new NodeRSA({ b: 512 })                          // 512 密钥长度
key.setOptions({ encryptionScheme: 'pkcs1' })         // 指定加密格式
//var publicDer = key.exportKey('public')                      // 公钥
//var privateDer = key.exportKey('private')                   // 私钥
function rsaEncrypt(data) {return key.encrypt(data, 'base64')
}
function rsaDecrypt(data) {return key.decrypt(data, 'utf8')
}// 测试加密
app.post('/aesEncrypt', async (req, res) => {res.send(aesEncrypt(req.body.data, req.body.key))})
app.post('/rsaEncrypt', async (req, res) => {res.send(rsaEncrypt(req.body.data))})// 测试解密
app.post('/aesDecrypt', async (req, res) => {res.send(aesDecrypt(req.body.data, req.body.key))})
app.post('/rsaDecrypt', async (req, res) => {res.send(rsaDecrypt(req.body.data))})// 处理 404 页面
app.use((req, res, next) => {res.status(404).send('404 not found')
})// 监听端口
app.listen(3000, () => {console.log('server start ...')
})

效果图

aes:


rsa:


使用已知的密钥加解密(RSA)

var rsaPublicKey = new NodeRSA('-----BEGIN PUBLIC KEY-----\n' + 'MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAL+JFgh+DyMJWWHNHaGgDyS6PWIMnR9w\n' +'6U4qKPiJX9YcNTQx7wD7SsM0/jZj0nQOhyvhfy+rj3qG97erfsQLa9cCAwEAAQ==\n' +'-----END PUBLIC KEY-----')var rsaPrviteKey = new NodeRSA('-----BEGIN RSA PRIVATE KEY-----\n' +'MIIBOwIBAAJBAL+JFgh+DyMJWWHNHaGgDyS6PWIMnR9w6U4qKPiJX9YcNTQx7wD7\n' +'SsM0/jZj0nQOhyvhfy+rj3qG97erfsQLa9cCAwEAAQJAAXPXr+7MzJY4kE5O6Dff\n' +'hYbICmNQGbnwewBE2UWpbWU7+gxRuuLA3N2AgrITC+tFUbp/dvjzkXxehZzQD7RD\n' +'yQIhAP4+yjKPUqQ/AbmgsITyZkQ7eB3epIkYJ1O7OM3AcwxbAiEAwNt/i2efgiQ0\n' +'np+zb4F+apn4ecxvT01JfNk/3Y+IJzUCIBOeQrnuB0F3PynUtWo8zhlbwWQEpwuR\n' +'Go/CdZqiy/3bAiEAiPygiQ3OwCslcTKwythpSiEZ3LH4spSMSXErKx5jsK0CIQCD\n' +'2ZrIVjgWLwNCsHtAreZmiyyPmflqcKuxd9VbiRhwig==\n' +'-----END RSA PRIVATE KEY-----')const encrypted = rsaPublicKey.encrypt('123456', 'base64')console.log(encrypted)const decrypted = rsaPrviteKey.decrypt(encrypted, 'utf8')console.log(decrypted)

补充:crypto-js 的 aes 加解密

// aes js 加密
function aesEncryptJs(data, key){const cipher = CryptoJS.AES.encrypt(data, CryptoJS.enc.Utf8.parse(key), {mode: CryptoJS.mode.ECB,padding: CryptoJS.pad.Pkcs7,iv: "",});const resultCipher = cipher.ciphertext.toString(CryptoJS.enc.Base64);return resultCipher;
}// aes js 解密
function aesDecryptJs(encrypted, key){const decipher = CryptoJS.AES.decrypt(encrypted, CryptoJS.enc.Utf8.parse(key), {mode: CryptoJS.mode.ECB,padding: CryptoJS.pad.Pkcs7,iv: "",});const resultDecipher = CryptoJS.enc.Utf8.stringify(decipher);return resultDecipher;
}

[Node.js] rsaaes 加密解密相关推荐

  1. node.js aes-256-cbc 加密 解密

    需求 使用 node.js 进行AES 加密解密,代码如下 代码 // Nodejs encryption with CTR const crypto = require('crypto'); con ...

  2. js中加密解密时中文符号乱码

    原先加密解密定义方法请看:JavaScript自定义实现字符串加密和解密 上面的方法会导致后台给前端返回名称类的字符串中带中文符号时,页面渲染的会有乱码的情况存在,如何解决这一问题呢,发现利用以下几种 ...

  3. 利用 node.js 云函数解密获取微信小程序的手机号码等加密信息 encryptedData 的内容。

    首先你必须会用微信小程序的云函数功能: 1.创建一个名为token的云函数 2.在云开发的云函数管理中添加对应的token云函数 3.在开发工具中编辑云函数token 4.点击右键,安装并部署 大致是 ...

  4. js base64加密解密乱码解决

    需要引入两个js base64和unicodeAnsi //加密 var base= new Base64(); var value = base.encode(strUnicode2Ansi(&qu ...

  5. js/java加密解密

    怎么给文字加密? js代码: encrypt.js /* *功能:对url加密算法(只针对window.location.href跳转,不针对post表单提交及ajax方式) *算法:对于暴露在浏览器 ...

  6. js 中文加密解密

    encodeURI() 加密  进行两次加密 decodeURI() 解密  进行两次解密

  7. JavaScript(js)加密解密视频文件

    加密文件: 1.注意crypto的方法,createCipheriv中的参数algorithm必须为"aes-128-cbc" 2.encryptStream.setAutoPad ...

  8. js url加密解密

    JavaScript中有三个可以对字符串编码的函数,分别是: escape,encodeURI,encodeURIComponent,相应3个解码函数:unescape,decodeURI,decod ...

  9. js rsa验签_js rsa sign使用笔记(加密,解密,签名,验签)

    你将会收获: js如何加密, 解密 js如何签名, 验签 js和Java交互如何相互解密, 验签(重点) 通过谷歌, 发现jsrsasign库使用者较多. 查看api发现这个库功能很健全. 本文使用方 ...

  10. 《Node.js区块链开发》

    <Node.js区块链开发> [注]基于ES6的最新版,正在筹划中. 特别说明 亿书,让有知识的人富起来.我们的产品,将全部基于P2P网络进行开发设计,面向未来进行技术研发. 纸质书籍:h ...

最新文章

  1. 用ftp、http搭建网络yum源
  2. hadoop和spark搭建记录
  3. 在leopard下用textmate开发rails项目
  4. Jsoup V的幕后秘密:优化的技巧和窍门
  5. 安庆机器人编程选_安庆市首届中小学机器人创客竞赛举行 460名选手比智慧拼创新 科技感满满!...
  6. SQL 2017——新功能
  7. Python+matplotlib数据可视化设置图例3个精选案例
  8. 矩池云利用ipykernel为JupyterLab添加kernel以及展示出来
  9. [PhoneGap]Mac下搭建PhoneGap开发环境
  10. 给年轻人几点买房建议
  11. linux免费私人云盘软件,Appnode+kodexplorer免费搭建私有云盘
  12. SUSE LINUX 10.1如何ADSL上网指南(转)
  13. 山寨抢购 Intel欲提高Atom处理器售价
  14. 《私募股权基金投资基础知识》---第五章
  15. python 数字运算及格式化_Python基础教程(3)Python数据类型、运算与格式化
  16. java反序列化与Apache CC链、fastjson反序列化的理解与研究
  17. edge浏览器如何把网页放到桌面_怎么将Edge浏览器图标放到Win10桌面?
  18. Find和exec命令
  19. wkt 画圆_PS怎么画很多小圆呈圆形排列
  20. Android App支付系列(二):支付宝SDK接入详细指南(附官方支付demo)

热门文章

  1. python控制电脑休眠唤醒键_使用Python实现Wake On Lan远程开机功能
  2. imagemagick:a gentle introduction to magick++
  3. 人脸关键点检测的思考
  4. php实例三之网站浏览量统计
  5. Python和C语言运行速度对比(累加1亿次)
  6. gif转换成jpg,这个方法很简单
  7. php 采集网页 按xpath,网页数据采集相对XPATH使用教程 - 八爪鱼采集器
  8. iOS 蓝牙扫描枪功能
  9. 2022全国智慧医院建设大会
  10. 全球时区 简称 缩写 简介 PST EST GMT CST EDT UTC 等