python crypto: расшифровка DES CTR

у меня есть следующий код от atomicinf, найденный здесь: code atomicinf! код:

import Crypto.Cipher.AES
import Crypto.Util.Counter

key = "0123456789ABCDEF" # replace this with a sensible value, preferably the output of a hash
iv = "0000000000009001" # replace this with a RANDOMLY GENERATED VALUE, and send this with the ciphertext!

plaintext = "Attack at dawn" # replace with your actual plaintext

ctr = Crypto.Util.Counter.new(128, initial_value=long(iv.encode("hex"), 16))

cipher = Crypto.Cipher.AES.new(key, Crypto.Cipher.AES.MODE_CTR, counter=ctr)
print cipher.encrypt(plaintext)

мой вопрос: как работает расшифровка? (очевидно, мне нужно импортировать счетчик вручную или где-то сохранить текущий) и, во-вторых, как насчет DES? я знаю, что у него меньший счетчик, но как мне его определить?


person Angelo Uknown    schedule 23.11.2012    source источник
comment
Случайные 64-битные одноразовые номера слишком короткие, чтобы быть надежно уникальными. (Хорошо, это не имеет большого значения, так как DES дешев для грубой силы)   -  person CodesInChaos    schedule 23.11.2012
comment
я знаю, что это слабо, но мне все равно, я студент, и я не собираюсь его нигде применять. я только что сделал программу для шифрования-расшифровки DES во всех режимах, но я просто не могу получить правильный CTR... этот счетчик меня раздражает...   -  person Angelo Uknown    schedule 23.11.2012


Ответы (1)


Расшифровка для режима CTR работает так же, как и шифрование, т.е. для расшифровки необходимо второй раз вызвать 'encrypt'. Это связано с тем, что в режиме CTR IV увеличивается для каждого следующего блока и шифруется с помощью алгоритма AES, а результат затем обрабатывается открытым текстом. Xoring снова возвращает открытый текст.

person Nickolay Olshevsky    schedule 12.12.2012