Node.js内置模块之加密crypto
来源:互联网 发布:网络电视电视台怎么调 编辑:程序博客网 时间:2024/04/27 15:27
'use strict'//crypto(kri:pto)意为加密const cons = require('crypto');//声明为const 表示该变量不可修改//Hash算法var hash = cons.createHash('md5')//'sha1', 'md5', 'sha256', 'sha512'等hash.update("hello world")console.log(hash.digest('hex'));//Hmac算法,需要一个密钥var hmac = cons.createHmac('sha1','secret-key');hmac.update('hello world');console.log(hmac.digest('hex'));//AES是一种常用的对称加密算法,加解密都用同一个密钥。crypto模块提供了AES支持,但是需要自己封装好函数,便于使用://加密 cipher意为暗号function aesCrypto(data,key){ //创建一个加了秘钥的暗号 const cipher = cons.createCipher('aes192',key); //将暗号转换成十六进制 var aes = cipher.update(data,'utf-8','hex'); aes+=cipher.final('hex'); return aes;}//解密function aesDecrypto(data,key){ const dcipher = cons.createDecipher('aes192',key); var daes = dcipher.update(data,'hex','utf-8'); daes+=dcipher.final('utf-8'); return daes;}var data = '这是一个秘密,需要加密';var key = 'passworld';var encrypted = aesCrypto(data, key);var decrypted = aesDecrypto(encrypted, key);console.log('加密后: ' + encrypted);console.log('解密后: ' + decrypted);//注意到AES有很多不同的算法,如aes192,aes-128-ecb,aes-256-cbc等,AES除了密钥外还可以指定IV(Initial Vector),//不同的系统只要IV不同,用相同的密钥加密相同的数据得到的加密结果也是不同的。//加密结果通常有两种表示方法:hex和base64,这些功能Nodejs全部都支持,//但是在应用中要注意,如果加解密双方一方用Nodejs,另一方用Java、PHP等其它语言,需要仔细测试。//如果无法正确解密,要确认双方是否遵循同样的AES算法,字符串密钥和IV是否相同,加密后的数据是否统一为hex或base64格式。
输出如下:
5eb63bbbe01eeed093cb22bb8f5acdc3
b84b002077152646a6da921cf58121705150a967
加密后: 7b095fe521e9bb0031ccaea19106d26ccf9f0bc2a771228ee9878a10af510b71
解密后: 这是一个秘密,需要加密
阅读全文
0 0
- Node.js内置模块之加密crypto
- node.js 的crypto模块,加密cookie
- node.js 的crypto模块用来加密
- Node.js crypto模块
- node.js之基础加密算法模块crypto
- node中的加密模块 crypto
- NODE.JS——CRYPTO 加密模块(md5)
- NODE.JS学习笔记——CRYPTO 加密模块
- 详解Node.js API系列 Crypto加密模块(1)
- 详解Node.js API系列 Crypto加密模块(2) Hmac
- 详解Node.js API系列 Crypto加密模块
- node.js加密模块crypto常用方法介绍
- NodeJS 内置模块之crypto
- Node.js中实现MD5加密(crypto模块)和JavaScript中实现MD5加密
- Node.js学习之内置模块fs
- Node.js学习之内置模块http
- Node.js基本模块crypto(加解密)
- Node crypto crc32 加密
- 数据结构——静态链表模板类实现
- 程序员逆天改命之策反
- FFMPEG 关于对时间戳转换的理解
- 腾讯云搭建svn服务器
- 挂载文件系统选项nodiratime、noatime
- Node.js内置模块之加密crypto
- Linux笔记(2)_vi/vim 基本使用方法
- eclipse安装插件自动换行
- Linux+FastDFS分布式文件系统部署
- 我要吐槽
- JS—点击链接切换隐藏的内容
- Spark排错与优化
- Volkswagen:$27 Security Access
- VS 应用中,部分文件中的代码无法折叠的处理方法(以ashx文件为例)