Расшифрование текста режим CTR
Необходимо расшифровать текст при помощи CTR (режим реализовывала сама, поскольку нельзя пользоваться встроенным). Подскажите, пожалуйста, в чем ошибка. IV - первые 16 байт сообщения. Часть кода AesDecrypt:
blocks = SplitText(data, self.block_size)
open_texts = []
elif mode == 'CTR':
vector = int.from_bytes(blocks[0], 'big')
print('iv'+str(int(iv.hex(), 16)))
for i in range(len(blocks)):
open_texts.append(strxor(self.AESBlockEncrypt(vector.to_bytes(self.block_size, 'big'), False, None)[:len(blocks[i])], blocks[i]))
vector += 1
full_data = concat_bytes(open_texts)
try:
res = unpad(full_data, self.block_size)
except ValueError:
res = full_data
return res
Код AesBlockEncrypt
def AESBlockEncrypt(self, data, isFinalBLock, padding):
msg = None
if isFinalBLock == False:
msg = self.cipher.encrypt(data)
else:
print(pad(data, self.block_size, style=padding))
msg = self.cipher.encrypt(pad(data, self.block_size, style=padding))
print('padding' + str(msg))
print('block'+str(msg))
return msg
Вызов функции
key2 = bytes.fromhex("36f18357be4dbd77f050515c73fcf9f2")
data4 = bytes.fromhex("770b80259ec33beb2561358a9f2dc617e46218c0a53cbeca695ae45faa8952aa0e311bde9d4e01726d3184c34451")
cipher12 = AES.new(key2, AES.MODE_ECB)
block_cipher12 = BlockCiphers(block_size, cipher12)
ot6 = block_cipher12.AesDecrypt(data4, 'CTR', data4[:block_size])
print(ot6)