Heim  >  Artikel  >  Backend-Entwicklung  >  Python erstellt das DingTalk-Verschlüsselungs-/Entschlüsselungstool

Python erstellt das DingTalk-Verschlüsselungs-/Entschlüsselungstool

巴扎黑
巴扎黑Original
2017-03-30 14:20:502264Durchsuche

Ich habe schon lange keinen technischen Blog mehr geschrieben, ich habe mich in letzter Zeit mit Wissen beschäftigt und nichts zusammengefasst, was es wert wäre, geteilt zu werden, also habe ich bis jetzt aufgehört zu schreiben. Die jüngste Arbeit steht im Zusammenhang mit der Entwicklung von DingTalk. Der Beamte stellt kein Python-SDK zur Verfügung, daher kann ich alles nur selbst schreiben. Jetzt werde ich den Teil „Verschlüsselung/Entschlüsselung/Signatur“ teilen, dessen Implementierung relativ zeitaufwändig ist, in der Hoffnung, einigen Leuten zu helfen.

Informationen zum spezifischen Mechanismus der Verschlüsselung/Entschlüsselung finden Sie in der offiziellen Dokumentation.

Um diese Erweiterung in Ihrem Projekt zu installieren, verwenden Sie:

pip install dingtalk_crypto

Installation.

Informationen zur Verwendung finden Sie im folgenden Testcode:

# -*- 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



Veröffentlichen Sie abschließend die Quellcodeadresse des Projekts Ich hoffe auf einen Austausch.

Das obige ist der detaillierte Inhalt vonPython erstellt das DingTalk-Verschlüsselungs-/Entschlüsselungstool. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn