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!