加密模块如何在node . js中使用

  介绍

本篇文章给大家分享的是有关加密模块如何在节点。js中使用,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。

密码作为nodeJS已经稳定下来的模块在整个节点中具有举足轻重的地位,一切应用都需要加密解密,那么加密就是一个提供加密功能的模块。在这个模块中已经打包了OpenSSL的哈希,HMAC(哈希信息验证码),密码(加密),破译(解密),签字(签名)以及验证(验证)的功能。

<强>无法反编译的加密方式

话不多说直接上代码品鉴吧

onst  crypto =,要求(& # 39;密码# 39;);   function  l(参数),{   console.log才能(参数);   }   const  md5 =, crypto.createHash (& # 39; md5 # 39;);//创建一个md5 哈希算法   md5.update (& # 39; aa # 39;);//添加要转化的值   md5.update (& # 39; cc # 39;);//与前面的要转化的值进行拼接   l (md5.digest(& # 39;十六进制# 39;));//打印16进制的密文,   const  sha1 =, crypto.createHash (& # 39; sha1 # 39;);//创建一个sh2 哈希算法   sha1.update (& # 39; bbbb& # 39;);   l (sha1.digest(& # 39;十六进制# 39;));   const  hmac =, crypto.createHmac (& # 39; md5 # 39;,, & # 39;关键# 39;);//创建一个带秘钥的sha1或者md5算法   hmac.update(& # 39;协会# 39;);   l (hmac.digest(& # 39;十六进制# 39;));

最后的输出为

aa794f68b4f6ae5e590e9ed34e94d639
8 aed1322e5450badb078e1fb60a817a1df25a2ca
b03d8471e2c5f212289c3e2dcb95bd47

真真的输出了一堆16进制的字符但是简单生成个密文看来是很麻烦了。

一般用于密码的存储和登录注册之类的业务

<强>可以反编译的加密算法

//AES 对称加密算法的一种。//创建加密算法   function  aesEncode(数据,键),{   const 才能;cipher =, crypto.createCipher (& # 39; aes192& # 39;,,键);   var 才能;crypted =, cipher.update(数据,& # 39;use utf8 # 39;,, & # 39;十六进制# 39;);   crypted 才能+=,cipher.final(& # 39;十六进制# 39;);   return 才能,地下室;   }//创建解密算法   function  aesDecode(加密,密钥),{   const 才能;decipher =, crypto.createDecipher (& # 39; aes192& # 39;,,键);   var 才能;decrypted =, decipher.update(加密,& # 39;十六进制# 39;,,& # 39;use utf8 # 39;);   decrypted 才能+=,decipher.final (& # 39; use utf8 # 39;);   return 才能解密;   }   var  data =, & # 39;我是一个大傻瓜& # 39;;   var  key =, & # 39; keykey& # 39;;   l (aesEncode(数据,键));   l(数据);   l (aesDecode (aesEncode(数据,键),键));

最终输出

3094 e920cf4208e9cf1b209d4be9a2f018541c70db89b4e4fdcf3bda12d3abc7
我是一个大傻瓜
我是一个大傻瓜

这个的话感觉可以用于一般的密文通信。

<强> DH协商秘钥算法

在http下真叫别人抓包了,所有的信息就泄露了,就算是你用密文通信,开始需要个键来解码呀,这个关键不可能用意念传输还是需要来通过网络传输才行,所以还是又被黑的可能性,于是乎就产生了一个神奇的秘钥算法,两台机器之间只需要传递几个值便可以相互知道最终的秘钥,而就算是这些传递的值被抓走了,也无法破译最终秘钥因为关键的几个值只存储于终端上不在传输流通。

好了上代码

//DH算法协商秘钥/* *   ,*主动方使用的协商方法   ,* @returns 数组():说的是要传达给被动方的三个数据,一个是自己要用的一个数据   ,*/function  dhOneSay (), {   var 才能;one =, crypto.createDiffieHellman (512);   var 才能;one_key =, one.generateKeys ();   var 才能;prime =, one.getPrime ();   var 才能;generator =, one.getGenerator ();   var 才能;say =, {   ,,,':,',发电机:,发电机,,one_key: one_key   ,,};      return 才能;[说,一个);   }/* *   ,*被动方使用的协商方法已经可以得到秘钥   ,* @param {': ',发电机:,generoter,, one_key:, one_key}, props    ,* @returns 数组(),two_key是要返回给主动方的秘数,秘密是计算出来的秘钥   ,*/function  dhTwoGetSay(道具),{   var 才能;two =, crypto.createDiffieHellman (props.generator props.prime也);   var 才能;two_key =, two.generateKeys ();   var 才能;theSecret =, (two.computeSecret (props.one_key)) .toString(& # 39;十六进制# 39;);   return 才能;[two_key的不同之处是,theSecret ];   }/* *   ,*主动方收到被动方给予的秘钥后   ,* @param  str  two_key 被动方返回的密数   ,* @param  str  one 主动方最初的随机数   ,* @returns  str 计算出来的秘钥   ,*/function  dhOneGet (two_key) {   return  (one.computeSecret (two_key) .toString(& # 39;十六进制# 39;);   }//主动方自己产生数据   var  oneSay=dhOneSay ();//被动方接受主动方传过来的数据进行计算,产生握手数据和最终的秘钥   var  twoGetSay=dhTwoGetSay (oneSay [0]);//主动方接收到被动方传来的数据进行计算得到最终秘钥   var  oneSecret=dhOneGet (twoGetSay [0], oneSay [1]);//被动方的秘钥早已产生了直接读取   var  twoSecret=twoGetSay [1];   l (oneSay);   l (twoGetSay);   l (oneSecret);   l (twoSecret);

加密模块如何在node . js中使用