crypto加密

背景

  在与三方系统的对接中,需要生成sign签名,其中使用到了crypto加密、HMAC签名、sha1加密方法。

前言

crypto 模块提供了加密功能,包括对 OpenSSL 的哈希、HMAC、加密、解密、签名、以及验证功能的一整套封装。

  先解释一下官网中的代码:

// 引入crypto模块进入项目中
const crypto = require('crypto');

// 要加密的字符串
const secret = 'abcdefg';

// 调用crypto模块中的createHmac方法,通过sha256算法对明文进行哈希化
const hash = crypto.createHmac('sha256', secret)
// 哈希之后,添加明文I love cupcakes
                   .update('I love cupcakes')
// 将之后的内容进行十六进制的消化吸收                   
                   .digest('hex');
console.log(hash);

// 打印:
// c0fa1bc00531bd78ef38c628449c5102aeabd49b5dc3a2a516ea6ea959d6658e

使用

const crypto = require("crypto");
var datas = ["secret_id","phone","app_id","page_id","user_id","extry"]; 
const secret = "abcdefg";

// 排序的方法,排序出来的结果:a-z的顺序排序,并且以&符号连接
 const jsonToUrl = function(dic) {
     var sdic = dic.sort();
     var str="";
     for (let i = 0; i < sdic.length-1; i++) {
       str+=sdic[i]+"&";          
     }
     str += sdic[sdic.length -1];
     console.log(sdic);            
     console.log(str);
     return sdic;   
 };
     
 const hash = crypto
     .createHmac("sha1", secret)
     .update(jsonToUrl(datas))
     .digest()
     .toString("hex"); 
  
 console.log(hash);

结语

  经过这一次的使用,算是对crypto有了基本的认识吧。

参考文献

廖雪峰的官方网站
Node.js v12.13.0 文档
NodeJS 内置模块之crypto

发布了194 篇原创文章 · 获赞 118 · 访问量 6万+

猜你喜欢

转载自blog.csdn.net/m0_37508531/article/details/102765259