PyCrypto: Сколько случайных данных считается безопасным? - PullRequest
1 голос
/ 27 августа 2011

Я использую реализацию RSA в PyCrypto. Что касается шифрования (self, незашифрованный, K), то метод K является параметром случайных данных. Я хочу знать, сколько случайных данных необходимо передать, чтобы зашифрованные данные считались безопасными. Например, в моей реализации я передаю строгое простое число 1024 бита через модуль Crypto.Util.number, например:

enc_data = public_key.encrypt(data, number.getPrime(1024))

Считается ли это "достаточно безопасным"?

Спасибо

1 Ответ

3 голосов
/ 27 августа 2011

Реализация RSA не использует параметр K.Вы можете игнорировать это;Реализация RSA делает.

Глядя на строки 59-60 pycrypto-2.3/lib/Crypto/PublicKey/RSA.py, вы видите следующее:

def _encrypt(self, c, K):
    return (self.key._encrypt(c),)

Что доказывает, что K, если имеется, игнорируется.

Официальная документация

Плюс, разработчики декларируют это явно в документации.Фактически, если вы создадите открытый ключ public_key и введете

help(public_key.encrypt)

, вы получите их документацию, в которой явно указано:

encrypt(self, plaintext, K) method of Crypto.PublicKey.RSA._RSAobj instance
Encrypt a piece of data with RSA.

...
...

:Parameter K: A random parameter (*for compatibility only. This
 value will be ignored*)
:Type K: byte string or long
...