Jak działa AES w CTR w Pythonie z PyCrypto?
Używam python 2.7.1 Chcę zaszyfrować sth przy użyciu AES w trybie CTR. Zainstalowałem bibliotekę PyCrypto dla Pythona. Napisałem następujący kod:
secret = os.urandom(16)
crypto = AES.new(os.urandom(32), AES.MODE_CTR, counter=lambda: secret)
encrypted = crypto.encrypt("asdk")
print crypto.decrypt(encrypted)
Muszę uruchomić crypto.decrypt tyle razy, ile wynosi rozmiar bajtu mojego tekstu jawnego, aby poprawnie odszyfrować dane. To znaczy:
encrypted = crypto.encrypt("test")
print crypto.decrypt(encrypted)
print crypto.decrypt(encrypted)
print crypto.decrypt(encrypted)
print crypto.decrypt(encrypted)
Ostatnie połączenie do odszyfrowania da mi z powrotem tekst jawny. Inne wyjścia z deszyfrowania to niektóre bełkotliwe łańcuchy. Zastanawiam się, czy to normalne czy nie? Czy za każdym razem muszę dołączać do pętli o rozmiarze równym mojemu tekstowi jawnemu, czy też się myliłem?