elixirChain / dingtalk-encrypt

dingTalk encrypt Node Version. 钉钉的非官方nodejs版AES加解密库 sdk
https://www.npmjs.com/package/dingtalk-encrypt
Apache License 2.0
17 stars 8 forks source link

计算解密文字corpid不匹配或校验失败的问题 #10

Closed zjun615 closed 9 months ago

zjun615 commented 1 year ago

按照文档的示例解密

const encryptor = new DingTalkEncryptor(token, aes_key, corpId);
// 解密
encryptor.getDecryptMsg(params.signature, params.timestamp, params.nonce, encrypt);

结果报错: {"msgMap":{},"code":900010,"message":"计算解密文字corpid不匹配"} 开放平台报校验失败

经过反复对比其它语言的解密方法和开发文档,发现DingTalkEncryptor(token, aes_key, corpId)中的第3个参数corpIdcorpId,而是appKey

Leocat81 commented 11 months ago

按照文档的示例解密

const encryptor = new DingTalkEncryptor(token, aes_key, corpId);
// 解密
encryptor.getDecryptMsg(params.signature, params.timestamp, params.nonce, encrypt);

结果报错: {"msgMap":{},"code":900010,"message":"计算解密文字corpid不匹配"} 开放平台报校验失败

经过反复对比其它语言的解密方法和开发文档,发现DingTalkEncryptor(token, aes_key, corpId)中的第3个参数corpIdcorpId,而是appKey

确实,这个好坑呀,希望官方订正修复一下。

17Damon commented 9 months ago

文档中的参数 CORP_ID 具有歧义,后面会更改为KEY。 并且说明以下内容。

第三方企业应用:$key填写对应的suiteKey。

企业定制应用:$key填写对应的customKey。

企业内部应用:$key填写企业的Corpid。

详见官方文档:

加解密方案说明