Node.js 內置模塊crypto加密模塊(1) MD5 和 SHA

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

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

 

1.首先看一個簡單的加密安全


"use strict";
//引入crypto模塊 const crypto = require("crypto");
//建立一個使用md5加密的hash對象,也能夠使用sha一、sha25六、sha512加密 const hash = crypto.createHash("md5");
//添加須要加密的內容,update方法能夠有多個 hash.update("這是要加密的內容。"); hash.update("This is what needs to be encrypted.");
//將使用update進行加密的內容用十六進制的方式打印出來,也能夠傳入latin一、base64 console.log( hash.digest("hex") ); //須要注意的是digest只能出現一次

 

注:ui

a.這裏的加密使用的是 update 和 digest 方法加密

b.update方法能夠出現屢次,並且必須出如今digest方法前面spa

c.digest方法只能出現一次code

d.使用上述這種方法每次須要加密的時候只能加密一段htm

 

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 );

 

( 關於流模塊的介紹 )blog

關於流的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 )

相關文章
相關標籤/搜索