最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
nodejs实现钉钉ISV接入的加密解密方法
时间:2017-02-04 编辑:简简单单 来源:一聚教程网
这是我开发Worktile钉钉版本的时候遇到的当时感觉比较难的地方,现在写下来方法供大家学习交流
解密方法
代码如下 | 复制代码 |
exports.decryptMsg =function(text) { varaes_msg_buffer =newBuffer(text,'base64'); varkey =newBuffer(aes_key +"=",'base64'); variv = key.slice(0, 16); vardecipher = crypto.createDecipheriv('aes-256-cbc', key, iv); vardec = decipher.write(aes_msg_buffer); dec = decipher.read(); varmsg_leng_buffer = dec.slice(16, 20); varmsg_length = msg_leng_buffer.readInt32BE(); varrand_buffer = dec.slice(20, 20 + msg_length); varmsg = rand_buffer.toString("utf-8"); varresult = JSON.parse(msg); returnresult; }; |
加密方法
代码如下 | 复制代码 |
exports.encrypt_text =function(text, aes_key, suiteKey) { varkey =newBuffer(aes_key +"=",'base64'); variv = key.slice(0, 16); varrandom_buffer =newBuffer(exports.getRandomStr(16),'utf-8'); varbuffer =newBuffer(text,'utf-8'); varlength_buffer =newBuffer(4); length_buffer.writeUInt32BE(buffer.length, 0); varcorpidBytes =newBuffer(suiteKey,'utf-8'); varnewBuffer = Buffer.concat([random_buffer, length_buffer, buffer, corpidBytes]); varcipher = crypto.createCipheriv('aes-256-cbc', key, iv); //cipher.write(newBuffer); //var dec = cipher.read(); varcipheredMsg = Buffer.concat([cipher.update(/*encoded*/newBuffer), cipher.final()]); returncipheredMsg.toString('base64'); }; |
签名方法
代码如下 | 复制代码 |
vararr =[token, timestamp, nonce, res_encrypt]//token 是配置钉钉套件的token,timestamp时间戳, nonce随机字符串, res_encrypt是上面加密后的结果 exports.signature_arr =function(arr) { arr.sort(); varstr =""; for(vari = 0; i < arr.length; i++) { str += arr[i]; } varsha1 = crypto.createHash('sha1'); sha1.update(str); varmsg_signature = sha1.digest('hex'); returnmsg_signature; }; |
-
上一个: JavaScript日期选择功能实例
相关文章
- HTML简单购物数量小程序代码展示 10-31
- html canvas实现弹幕功能 10-31
- HTML中空格表示的意义 10-31
- html area标签解读 10-31
- html使用表单标签实现注册页面代码展示 10-31
- 使用HTML截图并保存为本地图片的代码展示 10-31