[Node.js] rsaaes 加密解密
默认加解密方式
'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 加密解密相关推荐
- node.js aes-256-cbc 加密 解密
需求 使用 node.js 进行AES 加密解密,代码如下 代码 // Nodejs encryption with CTR const crypto = require('crypto'); con ...
- js中加密解密时中文符号乱码
原先加密解密定义方法请看:JavaScript自定义实现字符串加密和解密 上面的方法会导致后台给前端返回名称类的字符串中带中文符号时,页面渲染的会有乱码的情况存在,如何解决这一问题呢,发现利用以下几种 ...
- 利用 node.js 云函数解密获取微信小程序的手机号码等加密信息 encryptedData 的内容。
首先你必须会用微信小程序的云函数功能: 1.创建一个名为token的云函数 2.在云开发的云函数管理中添加对应的token云函数 3.在开发工具中编辑云函数token 4.点击右键,安装并部署 大致是 ...
- js base64加密解密乱码解决
需要引入两个js base64和unicodeAnsi //加密 var base= new Base64(); var value = base.encode(strUnicode2Ansi(&qu ...
- js/java加密解密
怎么给文字加密? js代码: encrypt.js /* *功能:对url加密算法(只针对window.location.href跳转,不针对post表单提交及ajax方式) *算法:对于暴露在浏览器 ...
- js 中文加密解密
encodeURI() 加密 进行两次加密 decodeURI() 解密 进行两次解密
- JavaScript(js)加密解密视频文件
加密文件: 1.注意crypto的方法,createCipheriv中的参数algorithm必须为"aes-128-cbc" 2.encryptStream.setAutoPad ...
- js url加密解密
JavaScript中有三个可以对字符串编码的函数,分别是: escape,encodeURI,encodeURIComponent,相应3个解码函数:unescape,decodeURI,decod ...
- js rsa验签_js rsa sign使用笔记(加密,解密,签名,验签)
你将会收获: js如何加密, 解密 js如何签名, 验签 js和Java交互如何相互解密, 验签(重点) 通过谷歌, 发现jsrsasign库使用者较多. 查看api发现这个库功能很健全. 本文使用方 ...
- 《Node.js区块链开发》
<Node.js区块链开发> [注]基于ES6的最新版,正在筹划中. 特别说明 亿书,让有知识的人富起来.我们的产品,将全部基于P2P网络进行开发设计,面向未来进行技术研发. 纸质书籍:h ...
最新文章
- 用ftp、http搭建网络yum源
- hadoop和spark搭建记录
- 在leopard下用textmate开发rails项目
- Jsoup V的幕后秘密:优化的技巧和窍门
- 安庆机器人编程选_安庆市首届中小学机器人创客竞赛举行 460名选手比智慧拼创新 科技感满满!...
- SQL 2017——新功能
- Python+matplotlib数据可视化设置图例3个精选案例
- 矩池云利用ipykernel为JupyterLab添加kernel以及展示出来
- [PhoneGap]Mac下搭建PhoneGap开发环境
- 给年轻人几点买房建议
- linux免费私人云盘软件,Appnode+kodexplorer免费搭建私有云盘
- SUSE LINUX 10.1如何ADSL上网指南(转)
- 山寨抢购 Intel欲提高Atom处理器售价
- 《私募股权基金投资基础知识》---第五章
- python 数字运算及格式化_Python基础教程(3)Python数据类型、运算与格式化
- java反序列化与Apache CC链、fastjson反序列化的理解与研究
- edge浏览器如何把网页放到桌面_怎么将Edge浏览器图标放到Win10桌面?
- Find和exec命令
- wkt 画圆_PS怎么画很多小圆呈圆形排列
- Android App支付系列(二):支付宝SDK接入详细指南(附官方支付demo)