Как создать сильный одноразовый ключ сессии для AES в python - PullRequest
6 голосов
/ 15 февраля 2011

Я использую AES M2Crypto для шифрования сообщений, но запутался в том, как генерировать надежный случайный ключ сеанса и какой длины.Предоставляет ли M2Crypto какую-либо функцию для генерации случайного ключа.

Ответы [ 3 ]

12 голосов
/ 15 февраля 2011

AES- 128 имеет 128 битовый ключ = 16 байтов.

random_key = os.urandom(16)

должно быть достаточно для большинства применений.Когда вы передаете это случайное значение в M2 (или любую другую крипто-библиотеку), оно внутренне преобразуется в «расписание ключей», фактически используемое для шифрования.

4 голосов
/ 15 февраля 2011

M2Crypto печально известен отсутствием хорошей документации.

Вот что я мог бы извлечь из их тестовых случаев :

import os
from M2Crypto import EVP

k = EVP.Cipher(alg='aes_128_cbc', key=os.urandom(16), iv=os.urandom(16), op=enc)
0 голосов
/ 15 февраля 2011

Если вы шифруете, чтобы отправить другой стороне, то вы хотите сделать что-то вроде обмена ключами Диффи-Хеллмана или ECDH, чтобы установить общий секрет.Если вы просто хотите зашифровать для хранения, то вам нужен безопасный генератор случайных чисел.Я не верю, что M2Crypto обеспечивает это?

Похоже, M2Crypto поддерживает Диффи Хеллман.

...