我试图使用加密从AutoIt与Python TCP服务器进行通信,但我认为我的算法有问题,因为加密/解密的结果都不同:
AutoIt的:
#includeGlobal $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
Python输出:
Encrypted string: NDJepp4CHh5C/FZb4Vdh4w== Decrypted string: Am I welcome???
加密结果不一样......
我的"虫子"在哪里?