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 ...
随机推荐
- API的理解和使用——单线程架构
核心知识点: 1.单线程机制:所有命令放在一个队列中 2.为什么Redis单线程这么快?内存中执行.非IO阻塞.避免线程切换和竞态产生的消耗. 3.单线程的问题?一个命令不能执行太长时间,不然会阻塞其 ...
- 深刻理解render 和 redirect_to
深刻理解render 和 redirect_to http://www.blogjava.net/fl1429/archive/2009/03/12/259403.html 由于最近老是在表单提交后出 ...
- Swift 烧脑体操(一) - Optional 的嵌套
前言 Swift 其实比 Objective-C 复杂很多,相对于出生于上世纪 80 年代的 Objective-C 来说,Swift 融入了大量新特性.这也使得我们学习掌握这门语言变得相对来说更加困 ...
- spring boot集成多数据源过程以及错误
https://blog.csdn.net/aa456aaxxx/article/details/80346703 出现BindingException错误 解决如下 https://my.osch ...
- poj The Settlers of Catan( 求图中的最长路 小数据量 暴力dfs搜索(递归回溯))
The Settlers of Catan Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 1123 Accepted: ...
- Contiki Etimer 模块
一.Etimer概述 Etimer提供产生时间事件(timed event)的机制,当设定好的timer到期时,将会给设定etimer的process发送一个PROCESS_EVENT_TIMER 事 ...
- python之tkinter_1
以下内容来自:https://blog.csdn.net/wangyiyan315/article/details/16361065 from tkinter import * # 导入tkinter ...
- 最近采集写的一个超简单实用的HTML解析类
1. [文件] HtmlDom.php <?php$oldSetting = libxml_use_internal_errors( true ); libxml_clear_errors(); ...
- IDEAL葵花宝典:java代码开发规范插件:GsonFormat插件将JSONObject格式的String 解析成实体
前言: GsonFormat插件主要用于使用Gson库将JSONObject格式的String 解析成实体,该插件可以加快开发进度,使用非常方便,效率高. 这个教程主要是学习IntelliJ IDEA ...
- Ubuntu更改启动内存
参考:https://superuser.com/questions/152921/how-to-boot-with-mem-1024m-argument-using-grub-ubuntu-10-0 ...