nodejs加密的方法:1、導(dǎo)入crypto模塊;2、設(shè)置加密類型和要使用的加密密鑰;3、將編碼方式從utf-8轉(zhuǎn)為hex;4、返回加密后的字符串即可。
本文操作環(huán)境:windows7系統(tǒng)、nodejs10.16.2版,DELL G3電腦。
nodejs 如何加密?
nodejs常用加密方式:
/** * @加密模塊 * @md5可以被彩虹吧破解,這里就不用啦 * @author lwt * */ //導(dǎo)入模塊 var crypto = require('crypto'); /** * @aes192加密模塊 * @param str string 要加密的字符串 * @param secret string 要使用的加密密鑰(要記住,不然就解不了密啦) * @retrun string 加密后的字符串 * */ exports.getEncAse192 = function(str, secret) { var cipher = crypto.createCipher("aes192", secret); //設(shè)置加密類型 和 要使用的加密密鑰 var enc = cipher.update(str, "utf8", "hex"); //編碼方式從utf-8轉(zhuǎn)為hex; enc += cipher.final("hex"); //編碼方式從轉(zhuǎn)為hex; return enc; //返回加密后的字符串 } /** * @aes192解密模塊 * @param str string 要解密的字符串 * @param secret string 要使用的解密密鑰(要和密碼的加密密鑰對(duì)應(yīng),不然就解不了密啦) * @retrun string 解密后的字符串 * */ exports.getDecAse192 = function(str, secret) { var decipher = crypto.createDecipher("aes192", secret); var dec = decipher.update(str, "hex", "utf8");//編碼方式從hex轉(zhuǎn)為utf-8; dec += decipher.final("utf8");//編碼方式從utf-8; return dec; } /** * @Hmac-sha1加密模塊 (每次加密隨機(jī),不可逆) * @param str string 要加密的字符串 * @param secret string 要使用的加密密鑰 * @retrun string 加密后的字符串 * */ exports.getHmac = function(str, secret) { var buf = crypto.randomBytes(16); secret = buf.toString("hex");//密鑰加密; var Signture = crypto.createHmac("sha1", secret);//定義加密方式 Signture.update(str); var miwen=Signture.digest().toString("base64");//生成的密文后將再次作為明文再通過(guò)pbkdf2算法迭代加密; return miwen; } /** * @sha1加密模塊 (加密固定,不可逆) * @param str string 要加密的字符串 * @retrun string 加密后的字符串 * */ exports.getSha1 = function(str) { var sha1 = crypto.createHash("sha1");//定義加密方式:md5不可逆,此處的md5可以換成任意hash加密的方法名稱; sha1.update(str); var res = sha1.digest("hex"); //加密后的值d return res; }
加密是以某種算法改變?cè)械男畔?shù)據(jù),使得未授權(quán)用戶即使獲得了已加密信息,因不知解密的方法,無(wú)法得知信息真正的含義,通過(guò)這種方式提高網(wǎng)絡(luò)數(shù)據(jù)傳輸?shù)陌踩?,加密算法常?jiàn)的有哈希算法、HMAC 算法、簽名、對(duì)稱性加密算法和非對(duì)稱性加密算法,加密算法也分為可逆和不可逆,比如 md5 就是不可逆加密,只能暴力破解(撞庫(kù)),我們?cè)?NodeJS 開(kāi)發(fā)中就是直接使用這些加密算法,crypto 模塊提供了加密功能,包含對(duì) OpenSSL 的哈希、HMAC、加密、解密、簽名以及驗(yàn)證功能的一整套封裝,核心模塊,使用時(shí)不需安裝。
【推薦學(xué)習(xí):《nodejs視頻教程》】