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

 更新时间:2016年12月07日 08:52:01   作者:乐正  
本文给大家介绍的是使用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

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

相关文章

  • python方向键控制上下左右代码

    python方向键控制上下左右代码

    这篇文章主要介绍了python方向键控制上下左右代码,小编觉得还是挺不错的,具有一定借鉴价值,需要的朋友可以参考下
    2018-01-01
  • python检查指定文件是否存在的方法

    python检查指定文件是否存在的方法

    这篇文章主要介绍了python检查指定文件是否存在的方法,涉及Python基于os模块判定文件的相关技巧,非常简单实用,需要的朋友可以参考下
    2015-07-07
  • Python三十行代码实现简单人脸识别的示例代码

    Python三十行代码实现简单人脸识别的示例代码

    这篇文章主要介绍了Python三十行代码实现简单人脸识别的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-03-03
  • Python打包为exe详细教程

    Python打包为exe详细教程

    今天给大家介绍如何用Python打包exe,文中有非常详细的教程,对正在学习python的小伙伴们有很好地帮助,需要的朋友可以参考下
    2021-05-05
  • 解决python将xml格式文件转换成txt文件的问题(xml.etree方法)

    解决python将xml格式文件转换成txt文件的问题(xml.etree方法)

    从数据分析的角度去看xml格式的数据集,具有简单性,结构和内容分离、可扩展性的特征,今天通过本文给大家分享python将xml格式文件转换成txt文件的问题及解决方法(xml.etree方法),感兴趣的朋友一起看看吧
    2021-09-09
  • python 如何做一个识别率百分百的OCR

    python 如何做一个识别率百分百的OCR

    最近在做游戏自动化(测试),也就是游戏脚本了。主要有以下几个需求识别率百分百、速度要快、模型要小,本文就来着手实现它
    2021-05-05
  • Python迭代器和生成器定义与用法示例

    Python迭代器和生成器定义与用法示例

    这篇文章主要介绍了Python迭代器和生成器定义与用法,结合实例形式详细分析了Python迭代器和生成器的概念、原理、定义、使用方法及相关操作注意事项,需要的朋友可以参考下
    2018-02-02
  • Python读写二进制文件的实现

    Python读写二进制文件的实现

    本文主要介绍了Python读写二进制文件的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-04-04
  • 利用Matlab提取图片曲线

    利用Matlab提取图片曲线

    一张图片,怎样才可以提取里面曲线的数据,从而协助我们完成其他需要的数据呢?本文通过示例来进行说明,文中大量的代码以及图片都可以帮助小伙伴们了解
    2021-08-08
  • Django实现分页功能

    Django实现分页功能

    今天给大家分享的是如何使用Django实现简单分页功能的方法,主要依托于Django提供的一个新的类Paginator来实现的
    2018-07-07

最新评论