Может кто-то говорить мне, как добавить дополнение к данным для создания этого приемлемым для алгоритма шифрования AES256 в pycrypto библиотеке (Python).
Большое спасибо заранее..:)
, глядя на документацию , кажется, что это зависит от вас, пользователь библиотеки, прокладывая данные самостоятельно. Документация утверждает, что размер блока для AES всегда 16 байт, поэтому вам нужно прокладывать данные нескольким 16 байтам.
Как проводится прокладка, зависит от типа данных. Для строк наилучший подход, вероятно, должен кодировать строку к определенному кодированию, а затем принять длину этой кодировки. Таким образом, вы не полагаетесь на все персонажи, представленные 8-битным CodePoint:
plaintext = data.encode('utf-8')
l = len(plaintext)
ciphertext = cipher.encrypt(plaintext + ((16 - len%16) * PADDING_BYTE))
аналогичный подход будет работать, когда ваши данные являются массивом байтов.
0
Должен работать нормально, как padding_byte
, но вам нужно позаботиться о том, чтобы удалить прокладку, когда вы расшифруете данные. Это может стоить, включая длину данных в зашифрованном тексте, например, Подготовьте длину данных на открытый текст перед шифрованием, но затем вам нужно перейти через некоторые обручи, чтобы убедиться, что заполнение генерируется правильно.
Редактировать : О, да, как и ссылки на RFC Gregs, чтобы упоминать, стандартный способ обращения с проблемой длины - это используйте длину прокладки в качестве байта для прокладки. Я Если вам нужны 6 байтов прокладки прокладки байта 0x06
. Обратите внимание, что если вам не нужна прокладка, вы добавите целый блок прокладки байтов (16 байтов 0xa0
), чтобы вы могли правильно восстановить сообщение.
Вот ответ:
Sub x()
ActiveSheet.UsedRange
End Sub
запустить это, и последняя ячейка будет сброшен.
-121--3436630-Используйте стандартную схему заполнения, такие как схема, изложенная в PKCS-5 , раздел 6.1.1 Step # 4 (замените 8 в этом примере 16, если вы используют AES).