मैं एन्क्रिप्शन का उपयोग एक अजगर टीसीपी सर्वर के साथ AutoIt से संवाद करने के लिए कोशिश कर रहा हूँ, लेकिन मैं वहाँ कुछ मेरी एल्गोरिदम के साथ गलत दोनों encryptions के परिणामों के बाद से है लगता है/decryptions अलग हैं:AutoIt/डिक्रिप्ट
AutoIt:
#include <Crypt.au3>
Global $key = "pjqFX32pfaZaOkkCFQuYziOApaBgRE1Y";
Global $str = "Am I welcome???"
_Crypt_Startup()
$hKey = _Crypt_DeriveKey($key, $CALG_AES_256)
$s = _Crypt_EncryptData($str, $hKey, $CALG_USERKEY)
$s = _Base64Encode($s)
ConsoleWrite("Encrypted: " & $s & @CRLF)
$s = _Base64Decode($s)
$str = _Crypt_DecryptData($s, $hKey, $CALG_USERKEY)
ConsoleWrite("Decrypted: " & BinaryToString($str) & @CRLF)
AutoIt आउटपुट:
Encrypted: ZFBnThUDPRuIUAPV6vx9Ng==
Decrypted: Am I welcome???
पायथन:
#!/usr/bin/env python
from Crypto.Cipher import AES
import base64
import binascii
BLOCK_SIZE = 16
PADDING = binascii.unhexlify(b"07")
pad = lambda s: s + (BLOCK_SIZE - len(s) % BLOCK_SIZE) * PADDING
EncodeAES = lambda c, s: base64.b64encode(c.encrypt(pad(s)))
DecodeAES = lambda c, e: c.decrypt(base64.b64decode(e)).rstrip(PADDING)
secret = 'pjqFX32pfaZaOkkCFQuYziOApaBgRE1Y'
cipher=AES.new(key=secret, mode=AES.MODE_ECB)
encoded = EncodeAES(cipher, 'Am I welcome???')
print 'Encrypted string:', encoded
decoded = DecodeAES(cipher, encoded)
print 'Decrypted string:', decoded
अजगर उत्पादन:
Encrypted string: NDJepp4CHh5C/FZb4Vdh4w==
Decrypted string: Am I welcome???
एन्क्रिप्टेड परिणाम ही नहीं हैं ...
मेरे "बग" है?
मैंने शुरू में सोचा कि यह स्ट्रिंग एन्कोडिंग के साथ एक मुद्दा था, लेकिन मैंने ऑटोआईट में जो कुछ भी सोच सकता हूं उसकी कोशिश की है और आपके पायथन कोड के समान परिणाम नहीं मिल सकता है। क्या यह [http://stackoverflow.com/a/12221931/611562) आपके पायथन कोड से प्रासंगिक है? – Matt
यह वास्तव में पाइथन पक्ष पर एक समस्या प्रतीत होता है। मैंने ऑटोआईटी भाग के खिलाफ एनआईएसटी फाइलों से केएटी भाग लिया और यह सभी परीक्षण पास कर दिया। PyCrypto इसे पारित नहीं किया था। तो मुझे लगता है कि मुझे अजगर के लिए एक और एईएस कार्यान्वयन मिलना है। यह भी देखें: http://eli.thegreenplace.net/2010/06/25/aes-encryption-of-files-in-python-with-pycrypto/#comment-979860 –
ऐसा लगता है कि मुझे "समस्या" मिली ... डिफ़ॉल्ट रूप से स्वचालित रूप से 0x00 पैडिंग और पायथन के लिए 0x20 का उपयोग करता है। जैसे ही मैंने कोड अपडेट किया, मैं "आत्म उत्तर" दूंगा। धन्यवाद मैट। –