Шифрование с помощью Python - PullRequest
1 голос
/ 15 июля 2009

Я делаю функцию шифрования в Python и хочу зашифровать случайное число с помощью открытого ключа.

Я хотел бы знать, что если я использую пакет Crypto (Crypto.publicKey.pubkey), то как я могу использовать такой метод, как ...

def encrypt(self,plaintext,k)

Здесь k само по себе является случайным числом, это означает, что ключ. Может ли кто-нибудь помочь мне с чем-то связанным?

Ответы [ 3 ]

4 голосов
/ 15 июля 2009

Вы пытаетесь зашифровать ключ сеанса / сообщения для симметричного шифрования, используя открытый ключ получателя? В таких случаях было бы проще использовать, скажем, SSH или TLS.

Вернуться к вашему вопросу:

Me Too Crypto (M2Crypto) - хорошая оболочка для openssl.

Для начала вам нужно получить открытый ключ получателя:

recip = M2Crypto.RSA.load_pub_key(open('recipient_public_key.pem','rb').read())

Теперь вы можете зашифровать ваше сообщение:

plaintext = random_integer_you_want_to_encrypt
msg = recip.public_encrypt(plaintext,RSA.pkcs1_padding)

Теперь только кто-то, имеющий закрытый ключ получателя, может его расшифровать.

3 голосов
/ 15 июля 2009

вы можете попробовать Pycrypto .

0 голосов
/ 16 июля 2009

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

К сожалению, в зависимости от того, какой алгоритм открытого ключа вы используете, это k должно удовлетворять более или менее строгим условиям. Т.е. ваше шифрование может быть совершенно небезопасным, если k не содержит достаточно энтропии. Это затрудняет использование pycrypto, потому что вам нужно знать больше о используемой вами криптосистеме, чем разработчик библиотеки. На мой взгляд, это серьезный недостаток Pycrypto, и я бы порекомендовал вам использовать более высокоуровневую библиотеку шифрования, которая не требует, чтобы вы знали такие детали. (то есть что-то вроде M2Crypto)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...