微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

nodejs 实现钉钉ISV接入的加密解密方法

这是我开发Worktile钉钉版本的时候遇到的当时感觉比较难的地方,现在写下来方法供大家学习交流

解密方法

rush:js;"> exports.decryptMsg = function (text) { var aes_msg_buffer = new Buffer(text,'base64'); var key = new Buffer(aes_key + "=",'base64'); var iv = key.slice(0,16); var decipher = crypto.createDecipheriv('aes-256-cbc',key,iv); var dec = decipher.write(aes_msg_buffer); dec = decipher.read(); var msg_leng_buffer = dec.slice(16,20); var msg_length = msg_leng_buffer.readInt32BE(); var rand_buffer = dec.slice(20,20 + msg_length); var msg = rand_buffer.toString("utf-8"); var result = JSON.parse(msg); return result; };

加密方法

rush:js;"> exports.encrypt_text = function (text,aes_key,suiteKey) { var key = new Buffer(aes_key + "=",16); var random_buffer = new Buffer(exports.getRandomStr(16),'utf-8'); var buffer = new Buffer(text,'utf-8'); var length_buffer = new Buffer(4); length_buffer.writeUInt32BE(buffer.length,0); var corpidBytes = new Buffer(suiteKey,'utf-8'); var newBuffer = Buffer.concat([random_buffer,length_buffer,buffer,corpidBytes]); var cipher = crypto.createCipheriv('aes-256-cbc',iv); //cipher.write(newBuffer); //var dec = cipher.read(); var cipheredMsg = Buffer.concat([cipher.update(/*encoded*/newBuffer),cipher.final()]); return cipheredMsg.toString('base64'); };

签名方法

rush:js;"> var arr =[token,timestamp,nonce,res_encrypt] //token 是配置钉钉套件的token,timestamp时间戳, nonce随机字符串, res_encrypt是上面加密后的结果 exports.signature_arr = function (arr) { arr.sort(); var str = ""; for (var i = 0; i < arr.length; i++) { str += arr[i]; } var sha1 = crypto.createHash('sha1'); sha1.update(str); var msg_signature = sha1.digest('hex'); return msg_signature; };

以上所述是小编给大家介绍的nodejs 实现钉钉ISV接入的加密解密方法。编程之家 jb51.cc 收集整理的教程希望能对你有所帮助,如果觉得编程之家不错,可分享给好友!感谢支持

原文地址:https://www.jb51.cc/nodejs/42478.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐