码迷,mamicode.com
首页 > Web开发 > 详细

Node.js 内置模块crypto加密模块(1)md5和shax

时间:2019-06-09 23:47:04      阅读:141      评论:0      收藏:0      [点我收藏+]

标签:html   本质   关于   控制台   create   实现   process   null   标准   

MD5:消息摘要算法(Message-Digest Algorithm)

SHA家族:安全散列算法( Secure Hash Algorithm )

 

1.首先看一个简单的加密

"use strict";

//引入crypto模块
const crypto = require("crypto");

//创建一个使用md5加密的hash对象,也可以使用sha1sha256sha512加密
let hash = crypto.createHash("md5");

//添加需要加密的内容,update方法可以有多个
hash.update("这是要加密的内容。");
hash.update("This is what needs to be encrypted.");

//将使用update进行加密的内容用十六进制的方式打印出来,也可以传入latin1base64
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类似,事件驱动 )

"use strict";

const crypto = require("crypto");
let 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和shax

标签:html   本质   关于   控制台   create   实现   process   null   标准   

原文地址:https://www.cnblogs.com/hros/p/10995329.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!