后端使用nodejs開發,node版本v10.16.0,
廢話不多說直接上干貨~~~~~~
首先看一下釘釘官方檔案中的釘釘簽名例子:
- timestamp=1546084445901
- appSecret=testappSecret
- signature=HCbG3xNE3vzhO+u7qCUL1jS5hsu2n5r2cFhnTrtyDAE=
- urlEncode后的signature=HCbG3xNE3vzhO%2Bu7qCUL1jS5hsu2n5r2cFhnTrtyDAE%3D
現在要做的就是根據釘釘官方給出的例子,加密之后能夠匹配的上,
在上代碼之前,需要引入的包檔案:
1、crypto包:用于加密簽名,我用的版本是:1.0.1
2、urlencode包:用于轉換密文,我用的版本:1.1.0下方是代碼段:
const crypto = require('crypto'); const urlencode = require('urlencode');
//這個是請求釘釘簽名介面的引數 let requestData =https://www.cnblogs.com/shendaxian/p/ { tmp_auth_code:code }; //官方例子中的時間戳 let timestamp="1546084445901"; //官方例子中的appSecret碼 let appSecret="testappSecret"; //設定appSecret為"sha256"加密的密鑰 let hash_256 = crypto.createHmac("sha256",appSecret); //對時間戳進行加密,并使用“base64”輸出 let signature = hash_256.update(new Buffer(timestamp).toString("utf8"),'utf8').digest("base64"); console.log("加密結果:",signature); //對加密密文進行urlEncode轉化【之所以對密文要轉換,是擔心密文中有非法字符】 let urlSignature =urlencode(signature); console.log("urlencode轉換:",urlSignature);
到這里,對官方給出的示例進行簽名加密就結束了,加密的結果和官方示例中是一樣的,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/24575.html
標籤:其他
