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

Python制作钉钉加密/解密工具

东门清夷
2023-03-14
本文向大家介绍Python制作钉钉加密/解密工具,包括了Python制作钉钉加密/解密工具的使用技巧和注意事项,需要的朋友参考一下

又是很久没有写技术博客了,盖因最近都在学习知识,也没有总结出什么值得分享的内容,所以一直停笔至今。最近的工作和钉钉的开发打上了交到,官方并没有提供任何Python的SDK,于是只能全部自己写。现在我将其中实现起来相对费时间的“加密/解密/签名”部分分享出来,希望能帮助到一些人。

加密/解密的具体机制,可以参考 官方文档 。

在你的项目中安装这个扩展,可以使用: pip install dingtalk_crypto 安装。

使用方法,可以参考下面的测试代码:

# -*- coding: utf-8 -*-

import json
from dingtalk_crypto import DingTalkCrypto

# 这个是钉钉官方给的测试数据
# @see https://open-doc.dingtalk.com/doc2/detail.htm?treeId=175&articleId=104945&docType=1#s14
encrypt_text = '1a3NBxmCFwkCJvfoQ7WhJHB+iX3qHPsc9JbaDznE1i03peOk1LaOQoRz3+nlyGNhwmwJ3vDMG' \
        '+OzrHMeiZI7gTRWVdUBmfxjZ8Ej23JVYa9VrYeJ5as7XM/ZpulX8NEQis44w53h1qAgnC3PRzM7Zc' \
        '/D6Ibr0rgUathB6zRHP8PYrfgnNOS9PhSBdHlegK+AGGanfwjXuQ9+0pZcy0w9lQ=='

crypto = DingTalkCrypto(
  '4g5j64qlyl3zvetqxz5jiocdr586fn2zvjpa8zls3ij',
  '123456',
  'suite4xxxxxxxxxxxxxxx'
)

signature = '5a65ceeef9aab2d149439f82dc191dd6c5cbe2c0'
timestamp = '1445827045067'
nonce = 'nEXhMP4r'


class TestCrypto:
  def test_decrypt(self):
    randstr, length, msg, suite_key = crypto.decrypt(encrypt_text)
    msg = json.loads(msg)

    assert msg['EventType'] == 'check_create_suite_url'
    assert msg['Random'] == 'LPIdSnlF'
    assert suite_key == 'suite4xxxxxxxxxxxxxxx'

  def test_encode(self):
    encrypt_msg = crypto.encrypt('hello world')
    randstr, length, msg, suite_key = crypto.decrypt(encrypt_msg)
    assert msg == 'hello world'

  def test_check_signature(self):
    assert crypto.check_signature(encrypt_text, timestamp, nonce, signature)

  def test_sign(self):
    msg = crypto.encrypt('hello world')
    actual_sig, actual_time, actual_nonce = crypto.sign(msg)
    assert True

最后,贴出项目的 源码地址 ,希望能一些交流。

 类似资料:
  • 本文向大家介绍nodejs 实现钉钉ISV接入的加密解密方法,包括了nodejs 实现钉钉ISV接入的加密解密方法的使用技巧和注意事项,需要的朋友参考一下 这是我开发Worktile钉钉版本的时候遇到的当时感觉比较难的地方,现在写下来方法供大家学习交流 解密方法 加密方法 签名方法 以上所述是小编给大家介绍的nodejs 实现钉钉ISV接入的加密解密方法,希望对大家有所帮助,如果大家有任何疑问请给

  • 1.自我介绍 2面向对象介绍一下 3.面向过程介绍 4.面向过程的场景及缺点 5.线程池作用(说了句避免线程创建的开销) 6.线程创建开销很大吗,需要哪些开销?线程竞争如何解决 7.c++11新特性有哪些 8.lambda表达式的捕获方式及lambda的一个使用场景 9.实习的工作及简单问了点问题,没为难我 10.项目或者实习哪个的收获最大 11.makefile构建多个c++程序你会如何设计提示

  • 今天笔试比较照顾人,甚至于第三题还提示不建议用python,当然我用不用都是一样的,暴力2.25 第一题:模拟 注意点就是柱状图的高度是以最高的柱为准,先要求出mx public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in);

  • 企业安全手册 企业在钉钉上面的数据安全吗? 1. 数据是企业的,钉钉无法解密 数据属于企业所有,采用加密存储, 钉钉无法查看涉及企业及用户隐私的数据。 数据是企业的,钉钉无法解密 2. “钉钉云”服务稳定不停机,数据更安全 带安全标识的第三方应用产品及数据都存储在钉钉云上, 数据安全由钉钉平台提供安全技术保障。 “钉钉云”服务稳定不停机,数据更安全 3. 数据享受银行级别安全保护,无懈可击 钉钉背

  • 企业通讯一站式解决方案,节省75%通讯费用。 首推智能办公电话,专业商务电话保证客户不流失,强大“400电话”免费提供,开通就送1000分钟。同时提供了网络通话、电话会议、视频会议系统,一站式满足企业通讯需求。 钉钉电话 发起网络/视频会议 发起方式一 发起方式一 发起方式二 发起方式二 发起方式三 发起方式三 发起电话会议 【注】:电话会议功能仅限手机端发起。 电话会议需要预充值,但通话质量稳定

  • 1. 申请应用 1.1 登录钉钉开发者中心 登录钉钉开发者中心:钉钉开发者中心 (opens new window) 使用有管理员权限的钉钉账号扫码登录 如果仅做测试的话,可以点击右上角,选择“企业注册”,按照提示创建企业 创建完成后打开钉钉APP 选择工作台 点击左上角下拉框,选择刚刚创建的企业 点击右上角加号选择扫一扫,重新扫码登录 注:初次进入会被邀请填写一个问卷,如果是测试,则随便填就可