当前位置: 首页 > 编程笔记 >

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

萧鸿轩
2023-03-14
本文向大家介绍nodejs 实现钉钉ISV接入的加密解密方法,包括了nodejs 实现钉钉ISV接入的加密解密方法的使用技巧和注意事项,需要的朋友参考一下

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

解密方法

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;
};

加密方法

exports.encrypt_text = function (text, aes_key, suiteKey) {
 var key = new Buffer(aes_key + "=", 'base64');
 var iv = key.slice(0, 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', key, iv);
 //cipher.write(newBuffer);
 //var dec = cipher.read();
 var cipheredMsg = Buffer.concat([cipher.update(/*encoded*/newBuffer), cipher.final()]);
 return cipheredMsg.toString('base64');
};

签名方法

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接入的加密解密方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对小牛知识库网站的支持!

 类似资料:
  • 本文向大家介绍Python制作钉钉加密/解密工具,包括了Python制作钉钉加密/解密工具的使用技巧和注意事项,需要的朋友参考一下 又是很久没有写技术博客了,盖因最近都在学习知识,也没有总结出什么值得分享的内容,所以一直停笔至今。最近的工作和钉钉的开发打上了交到,官方并没有提供任何Python的SDK,于是只能全部自己写。现在我将其中实现起来相对费时间的“加密/解密/签名”部分分享出来,希望能帮助

  • 本文向大家介绍shell 操作钉钉机器人实现告警提醒的方法,包括了shell 操作钉钉机器人实现告警提醒的方法的使用技巧和注意事项,需要的朋友参考一下 我们知道,之前的运维告警多通过mail 等方式通知到相应的人员,难以实现随时随地的查看。随着手机APP的发展,很多告警开始发送到IM软件上去。目前比较常用的是发送到微信和钉钉上,今天我们将重点放在钉钉上。群机器人是钉钉群的高级扩展功能,群机器人可以

  • 本文向大家介绍Java AES加密解密的简单实现方法,包括了Java AES加密解密的简单实现方法的使用技巧和注意事项,需要的朋友参考一下 废话不多说,直接上代码 以上这篇Java AES加密解密的简单实现方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持呐喊教程。

  • 本文向大家介绍php实现基于openssl的加密解密方法,包括了php实现基于openssl的加密解密方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了php实现基于openssl的加密解密方法。分享给大家供大家参考,具体如下: 通过openssl加密解密方法 1. openssl加密方法: 2. openssl解密方法: PS:关于加密解密感兴趣的朋友还可以参考本站在线工具: 密码安全

  • 本文向大家介绍php结合md5实现的加密解密方法,包括了php结合md5实现的加密解密方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了php结合md5实现的加密解密方法。分享给大家供大家参考,具体如下: 最近在整理代码发现了一个不错的东西,结合md5的加解密算法。网上关于php结合md5的加密,解密算法比较少的,其实php手册里面就有,改一改就行了。在此贴一下,用这算法要加载一个php

  • 本文向大家介绍Python实现AES加密,解密的两种方法,包括了Python实现AES加密,解密的两种方法的使用技巧和注意事项,需要的朋友参考一下 第一种 第二种 以上就是Python实现AES加密,解密的两种方法的详细内容,更多关于Python实现AES加密,解密的资料请关注呐喊教程其它相关文章!