AES Key Generator Devon 2019-04-27T15:14:21-07:00. Below is a Base64 Encoded AES-256 key which was been generated using the secure javax KeyGenerator. This key will work perfectly with any of the AES encryption code elsewhere on my site, and probably most of yours as well. This key is secure, randomly generated, and has been generated just for you. With AES-CBC you usually need a random IV. However, in the case where you use each key only once, like when using password-based encryption with random salts for each file, you can use a fixed, zero IV. 10 Key Generator Mac. BouncyCastleProvider); KeyGenerator generator = KeyGenerator.getInstance('AES', 'BC'); generator.init(128); Key keyToBeWrapped =. As a reference and as continuation to the post:how to use OpenSSL to decrypt Java AES-encrypted data?I have the following questions.I am using OpenSSL libs and programming in C for encrypting.
Я пытаюсь построить две функции с помощью PyCrypto, которые принимают два параметра: сообщение и ключ, а затем зашифровать/расшифровать сообщение.
Я нашел несколько ссылок в интернете, чтобы помочь мне, но каждый из них имеет недостатки:
этот в codekoala использует ОС.urandom, который обескуражен PyCrypto.
кроме того, ключ, который я даю функции, не гарантирует точную ожидаемую длину. Что я могу сделать, чтобы это случится ?
кроме того, есть несколько режимов, которые рекомендуется? Я не знаю, что использовать :/
наконец, что такое IV? Могу ли я предоставить другой IV для шифрования и дешифрования, или это вернется в другом результате?
вот что я сделал до сих пор:
9 ответов
Aes Key And Iv Generator Online
вот моя реализация и работает для меня с некоторыми исправлениями и улучшает выравнивание ключа и секретной фразы с 32 байтами и iv до 16 байтов:
вам могут понадобиться следующие две функции для pad(когда шифрование) и unpad (когда дешифрование), когда длина ввода не кратна BLOCK_SIZE.
Итак, вы спрашиваете длину ключа? Вы можете использовать md5sum ключа, а не использовать его напрямую.
больше, согласно моему небольшому опыту использования PyCrypto, IV используется для смешивания вывода шифрования, когда вход такой же, поэтому IV выбирается как случайная строка и использует ее как часть выхода шифрования, а затем использовать его для расшифровки сообщения.
и вот моя реализация, надеюсь, это будет полезно для вас:
вы можете получить пароль из произвольного пароля с помощью криптографической хэш-функции (не в Python строение hash
) как SHA-1 или SHA-256. Python включает поддержку как в своей стандартной библиотеке:
вы можете усечь криптографическое хэш-значение, просто используя [:16]
или [:24]
и он сохранит свою безопасность до указанной длины.
для тех, кто хотел бы использовать urlsafe_b64encode и urlsafe_b64decode, вот версия, которая работает для меня (проведя некоторое время с проблемой unicode)
для пользы других, вот моя реализация дешифрования, которую я получил, объединив ответы @Cyril и @Marcus. Это предполагает, что это происходит через HTTP-запрос с encryptedtext и закодированным base64.
Aes Key And Iv Generator Download
позвольте мне обратиться к вашему вопросу о ' режимах.'И AES256 вид блочный шифр. Она принимает в качестве входных данных 32-байт ключ и 16-байтовая строка, называемая блок и выходами блока. Мы используем AES в режим работы для шифрования. Решения выше предлагают использовать CBC, который является одним из примеров. Другой называется CTR, и его несколько проще использовать:
это часто называют AES-CTR. Я бы советую соблюдать осторожность при использовании AES-CBC с PyCrypto. Причина в том, что он требует от вас указать схема, как показано на примере других приведенных решений. В общем, если вы не очень осторожно с прокладкой,здесь ударов это полностью сломать шифрование!
Теперь, важно отметить, что ключ должен быть random, 32-байтовая строка, пароль не достаточно. Обычно ключ генерируется следующим образом:
Aes Key Generator Online
ключ производным от пароля тоже:
какие решения предлагают использовать SHA256 для получения ключа, но это обычно считается плохая криптографическая практика.Проверьте Википедия подробнее о режимах работы.
немного поздно, но я думаю, что это будет очень полезно. Никто не упоминает о схеме использования, такой как PKCS#7 padding. Вы можете использовать его вместо предыдущих функций для pad(когда шифрование) и unpad (когда дешифрование).я приведу полный исходный код.
еще один взять на себя это (сильно производное от решений выше), но
- использует null для заполнения
- не использует лямбда (никогда не был поклонником)
протестировано с python 2.7 и 3.6.5