Node.js 内置模块crypto加密模块(1) MD5 和 SHA
MD5:消息摘要算法(Message-Digest Algorithm)
SHA家族:安全散列算法( Secure Hash Algorithm )
1.首先看一个简单的加密
"use strict";
//引入crypto模块
const crypto = require("crypto");
//创建一个使用md5加密的hash对象,也可以使用sha1、sha256、sha512加密
const hash = crypto.createHash("md5");
//添加需要加密的内容,update方法可以有多个
hash.update("这是要加密的内容。");
hash.update("This is what needs to be encrypted.");
//将使用update进行加密的内容用十六进制的方式打印出来,也可以传入latin1、base64
console.log( hash.digest("hex") );
//需要注意的是digest只能出现一次
注:
a.这里的加密使用的是 update 和 digest 方法
b.update方法可以出现多次,而且必须出现在digest方法前面
c.digest方法只能出现一次
d.使用上述这种方法每次需要加密的时候只能加密一段
2.接下来我们看一下怎么实现将一整个文件进行加密( 本质上就是使用流对文件进行加密 )
"use strict" const crypto = require( "crypto" ); const fs = require( "fs" ); let hash = crypto.createHash( "sha512" ); //创建阅读流,将test.txt文本使用hash对象加密后输出到控制台 fs.createReadStream( "test.txt" ).pipe( hash ).pipe( process.stdout );
( 关于流模块的介绍 )
( 关于流的pipe方法的使用 )
3.使用Hash对象进行加密( 与方法1类似,区别是该方法需要一个readable事件 )
"use strict";
const crypto = require("crypto");
const hash = crypto.createHash("sha256");
//加密已经完成的时候执行,判断加密是否完成的标准是end方法是否执行
hash.on("readable", () => {
//读取已经经过hash加密的内容
let data = hash.read();
if(data){
console.log(data.toString("base64"));
}
});
//需要进行加密的内容
hash.write("Some Text!");
//告诉系统加密已经完成
hash.end();
注:
1.write 方法和 end 方法可以有多个
2.end 方法必须在 write 方法之后
3.只有调用了 end 方法 监听事件 readable 才能执行
4.使用 read 方法来查看加密的内容
5.需要在 readable 事件中加data判断,否则会报错( TypeError: Cannot read property 'toString' of null )
Node.js 内置模块crypto加密模块(1) MD5 和 SHA的更多相关文章
- Node.js 内置模块crypto加密模块(4) Diffie Hellman
Diffie-Hellman( DH ):密钥交换协议/算法 ( Diffie-Hellman Key Exchange/Agreement Algorithm ) 百科摘录: Diffie-Hell ...
- Node.js 内置模块crypto加密模块(3) HMAC
HMAC:哈希消息认证码 ( Hash-based Message Authentication Code ) HMAC是密钥相关的哈希算法 使用 HMAC 进行加密的Node实现的一种方法: &qu ...
- Node.js 内置模块crypto加密模块(5) RSA
RSA加密算法 写在前面: 了解RSA算法的原理请查看下面的文章 一文搞懂 RSA 算法 来源:简书 作者:somenzz 在使用 Node 进行 RSA 加密之前我们首先需要获取RSA公共和私有密 ...
- Node.js 内置模块crypto加密模块(2) AES
AES:高级加密标准 ( Advanced Encryption Standard ) AES是一种对称加密算法:加密需要密钥,且加密密钥和解密密钥相同 下面是AES加密的Node实现: " ...
- Node.js 内置模块crypto使用事件方法(onreadable)加密的一些问题
javaScript代码如下: 'use strict'; const crypto = require('crypto'); //实例化一个AES加密对象 const aesEncrept = cr ...
- [Node.js] Gzip + crypto in stream
We can using gzip and crypto with stream: const fs = require('fs') const zlib = require('zlib') cons ...
- Node.js 内置模块fs(文件系统)
fs模块的三个常用方法 1.fs.readFile() -- 读文件 2.fs.writeFile() -- 写文件 3.fa.stat() -- 查看文件信息 fs模块不同于其它模块的地方是它有异步 ...
- Node.js 内置模块fs的readdir方法 查看某个文件夹里面包含的文件内容
fs.readdir(path[, options], callback) 例: "use strict"; const fs = require("fs"); ...
- Node.js 内置模块Stream(流)
"流"是一种抽象的数据结构 通过使用"流"可以将一段数据分割成几段,并按顺序传输,使用"流"可以降低对系统性能的要求,减少对CPU的消耗 S ...
随机推荐
- Algorithm: bit manipulation
1. 一个数的从右起第p1位和第p2位swap n位 unsigned int swapBits(unsigned int x, unsigned int p1, unsigned int p2, u ...
- 插头dp小结
插头dp: \(A:\)插头dp是什么? \(B:\)一种基于连通性状态压缩的动态规划问题 \(A:\)请问有什么应用呢? \(B:\)各种网格覆盖问题,范围允许状压解决,常用于计算方案数与联通块权值 ...
- Android Wifi简单的梳理【转】
本文转载自:http://blog.csdn.net/gabbzang/article/details/10005411 代表一个已经配置过的网络.包含网络ID(networkId).该网络ID代表的 ...
- NET LOCALGROUP命令详解(将用户添加到管理员组等)
NET LOCALGROUP [groupname [/COMMENT:"text"]] [/DOMAIN] groupname {/ADD [/COMMENT:"tex ...
- Object.is() Pollyfill
if (!Object.is) { Object.is = function(x, y) { // SameValue algorithm if (x === y) { // Steps 1-5, 7 ...
- Vue 数组中更新属性值后,视图不更新,等待其他元素更新后会触发的解决办法
因为 JavaScript 的限制,Vue.js 不能检测到下面数组变化: 直接用索引设置元素,如 vm.items[0] = {}: 修改数据的长度,如 vm.items.length = 0. t ...
- codeforces 659G G. Fence Divercity(dp)
题目链接: G. Fence Divercity time limit per test 2 seconds memory limit per test 256 megabytes input sta ...
- Loading 遮蔽层 简单实现。
<!--背景div--><div id="bg" class="bg" style="display:none;text-align ...
- 【Matlab】调试基础
1.matlab 调试子程序 在主程序进入子程序前一句加断点,然后step in,可以进入子程序. 但是直接在子程序里设置断点,运行主程序是不能进入子程序的.
- resiprocate使用入门:内网搭建基于repro的sipproxy测试环境
测试环境 sipproxy:repro + centos 客户端:windows电脑客户端使用X-Lite,手机andriod客户端使用linphone repro配置和启动 log的配置 如果使用默 ...