当前位置:首页 > 日记 > 正文

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

相关文章

ppt中如何加入时钟动画插件

ppt中如何加入时钟动画插件

时钟,动画,步骤,方法,插件,  在ppt中加入动画时钟要怎么做呢,一份好的PPT不仅可以吸引观众的眼球同时还可以放映自己的制作能力,那么要怎样做才能做好PPT呢?下面给大家分享ppt中加入时钟动画的方法步骤,欢迎大家来到学习。ppt中加入时钟动画…

在excel中如何按字体颜色进行排序

在excel中如何按字体颜色进行排序

排序,字体颜色,电脑软件,excel,  在整理Excel表格数据时,有时数据没有及时分类,导致数据多而杂。那么对于特别的数据,我们可以用颜色字体标记出来,需要时可按字体颜色进行排序。以下是小编为您带来的关于在excel中按字体颜色进行排序,希望对您…

JS实现touch 点击滑动轮播实例代码

JS实现touch 点击滑动轮播实例代码

实例代码,电脑软件,JS,touch,废话不多说了,直接给大家贴js代码了,具体代码如下所示:<script src="../js/jquery-1.8.3.min.js"></script><script src="../js/jQuery.mobile-1.3.2.min.js"></script>----------------------需要应用jquery …

.NET发布网站详细步骤

.NET发布网站详细步骤

步骤,发布网站,详细,电脑软件,NET,本文章分为三个部分: web网站发布、IIS6 安装方法、ASP.NET v4.0 安装方法一、web网站发布1.打开 Visual Studio 2013 编译环境2.在其解决方案上右击弹出重新生成解决方案,以查看是否有错误3.如果项目没有…

PPT怎么使用宏添加倒计时PPT使用宏

PPT怎么使用宏添加倒计时PPT使用宏

方法,倒计时,电脑软件,PPT,strong,  PPT怎么使用宏添加倒计时?在各类演讲、比赛中,经常要求比赛选手要在规定时间内完成演讲,于是,组办方就需要在PowerPoint演示中安装&ldquo;倒计时&rdquo;,用以提醒演讲者。下面小编就教你PPT使用宏添加倒计…

qq安全中心手机解绑定图文教程

qq安全中心手机解绑定图文教程

绑定,安全中心,图文教程,方法,电脑软件,  小伙伴们的QQ安全中心有绑定手机号码吗?那么小伙伴们知道如何解绑手机号码吗?今天小编就给大家带来了qq安全中心解绑手机号码的方法分享,一起来看看吧!qq安全中心手机解绑定的方法1.打开QQ安全中…

WPS表格中的数据如何以百分比显示

WPS表格中的数据如何以百分比显示

显示,数据,百分比,表格,电脑软件,  有时候想让WPS表格中单元格中的数字以百分比显示,让表格看起来更直观、明了,而又不改变单元格属性,数字照常可以计算。以下是小编为您带来的关于WPS表格中的数据以百分比显示,希望对您有所帮助。WPS表格中…

js 发布订阅模式的实例讲解

js 发布订阅模式的实例讲解

发布订阅,模式,实例,电脑软件,js,废话不多说,直接上代码//发布订阅模式class EventEmiter{ constructor(){ //维护一个对象 this._events={ } } on(eventName,callback){ if( this._events[eventName]){ //如果有就放一…

jQuery 循环遍历改变a标签的href |

jQuery 循环遍历改变a标签的href |

循环,遍历,标签,实例,电脑软件,把info类下面所有的a标签链接后天加"#article"。jQuery(document).ready(function($){  $('.info a').each(function(){    let Ahref = $(this).html() + "#article";    $(this).attr("hr…

wps文字怎样设置默认新建空白文档

wps文字怎样设置默认新建空白文档

文字,设置,默认,文档,方法,  由于新安装WPS办公软件后,启动时默认打开的是&ldquo;在线模板&rdquo;,而不是空白文档,这对于办公效率来说,会有一定的影响。那么,如何设置wps默认打开空白文档呢?其实方法很简单,下面就让小编告诉你的方法,希望对大…

微信小程序引用公共js里的方法的实

微信小程序引用公共js里的方法的实

引用,方法,详解,实例,程序,微信小程序引用公共js里的方法的实例详解一个小程序页面由四个文件组成,一个小程序页面的四个文件具有相同路径与文件名,由此我们可知一个小程序页面对应着一个跟页面同名的js文件。可是当有些公共方法,我们想抽离出…

qq空间动态隐私设置图文教程

qq空间动态隐私设置图文教程

设置,空间,动态,方法,图文教程,  QQ空间是腾讯推出的交友社区,而对空间权限的设置,涉及想看谁、不想谁看或者禁止任何人访问等等。相比网页空间权限设置,手机QQ针对空间权限的设置,更加方便快捷。今天小编分享了设置qq空间动态隐私的方法,希望…