şifresini, ama benim algoritmalar ile yanlış bir şey, her iki şifreleme sonuçlarına beri olduğunu düşünüyorum/deşifre farklıdır:AutoIt/I şifreleme kullanılarak bir Python TCP sunucusu ile AutoIt gelen iletişim kurmaya çalışıyorum
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 Çıktı:
Encrypted: ZFBnThUDPRuIUAPV6vx9Ng==
Decrypted: Am I welcome???
Python:
#!/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 çıkışı:
Encrypted string: NDJepp4CHh5C/FZb4Vdh4w==
Decrypted string: Am I welcome???
şifreli sonuçlar aynı DEĞİLDİR ...
benim "böcek" dir
?
Başlangıçta bunun dizgi kodlamasıyla ilgili bir sorun olduğunu düşündüm, ancak AutoIt'te düşünebildiğim her şeyi denedim ve python kodunuzla aynı sonucu alamıyorum. [Bu] (http://stackoverflow.com/a/12221931/611562) python kodunuzla alakalı mı? – Matt
Python tarafında gerçekten bir sorun gibi görünüyor. KAT'yi NIT dosyalarından AutoIT parçasına karşı çalıştırdım ve tüm testi geçti. PyCrypto geçmedi. Bu yüzden python için başka bir AES uygulaması bulmam gerektiğini düşünüyorum. Ayrıca bkz: http://eli.thegreenplace.net/2010/06/25/aes-encryption-of-files-in-python-with-pycrypto/#comment-979860 –
"Sorun" u bulduğum gibi görünüyor ... AutoIT varsayılan olarak doldurma için 0x00 kullanıyor ve python 0x20 kullanıyor. Kodu güncellediğimde "kendi kendine cevap vereceğim". Sağol Matt. –