Je n'ai pas écrit de blog technique depuis longtemps. J'ai étudié les connaissances récemment et je n'ai rien résumé qui mérite d'être partagé, j'ai donc arrêté d'écrire jusqu'à maintenant. Les travaux récents sont liés au développement de DingTalk. Le responsable ne fournit aucun SDK Python, je ne peux donc tout écrire que par moi-même. Je vais maintenant partager la partie "chiffrement/déchiffrement/signature" qui est relativement longue à mettre en œuvre, en espérant aider certaines personnes.
Pour le mécanisme spécifique de cryptage/déchiffrement, veuillez vous référer à la documentation officielle.
Pour installer cette extension dans votre projet, utilisez :
pip install dingtalk_crypto
Installation.
Comment utiliser, vous pouvez vous référer au code de test suivant :
# -*- 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
Enfin, postez l'adresse du code source du projet , en espérant avoir quelques échanges .
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!