PyCrypto не имеет функции, которая может управлять парольной фразой RSA.
Вместо этого вы можете использовать модуль ezPyCrypto ( homepage ), который построен поверх модуля PyCrypto. Он имеет более простой интерфейс и позволяет:
- Генерация, экспорт и импорт открытых и закрытых ключей
- Шифрование и дешифрование строк с легкостью
- При желании можно создавать зашифрованные данные в виде текста, удобного для электронной почты
- Подпишите и проверьте строки (включая документы)
- Защитите свой закрытый ключ парольной фразой
- Создание «потоков» для отправки данных через защищенные сокеты
- Выберите любой размер открытого ключа (2048 бит рекомендуется)
- Выберите между RSA и ElGamal для открытого ключа и IDEA, DES3, Blowfish, ARC4, IDEA для сеансового ключа
- Отдыхайте в комфорте безопасности благодаря 256-битным сеансовым ключам и защите от обычных атак RSA и ElGamal, которые будут мучительно расстраивать любого, кто пытается нарушить вашу конфиденциальность.
Использование:
"""
example7.py
Demonstrate the use of passphrases with private keys
"""
import ezPyCrypto
mysecret = "Don't look at this!!!"
raw = "Here is a string to encrypt"
# Create a key object
k = ezPyCrypto.key(passphrase=mysecret)
# Export public/private key
publicAndPrivateKey = k.exportKeyPrivate()
# Encrypt against this keypair
enc = k.encString(raw)
# Create a new key object, and import keys (with passphrase)
k1 = ezPyCrypto.key(publicAndPrivateKey, passphrase=mysecret)
# Decrypt text
dec = k.decString(enc)
# test
if dec == raw:
print "Successful decryption using correct passphrase"
else:
print "Failed somewhere"
print "Trying now with a bad passphrase"
try:
k2 = ezPyCrypto.key(publicAndPrivateKey, passphrase="cracking attempt")
except ezPyCrypto.CryptoKeyError:
print "Oops - our feeble cracking attempt failed (which is a good thing)."
else:
print "Cracking attempt succeeded - we're not safe"
# We're in - let's plunder
dec2 = k2.decString(enc)
Построить
Если вы посмотрите на источник ezCryptoPy, то увидите, что ключ фактически зашифрован / расшифрован с использованием алгоритма BlueFish:
# decrypt against passphrase
blksiz = 8 # lazy of me
# create temporary symmetric cipher object for passphrase -
#hardwire to Blowfish
ppCipher = Blowfish.new(passphrase,
Blowfish.MODE_CFB,
self._passIV[0:blksiz])
enclen = len(keyobj)
decpriv = ''
i = 0
while i < enclen:
decbit = ppCipher.decrypt(keyobj[i:i+blksiz])
decpriv += decbit
i += blksiz
keyobj = decpriv[0:size]
Это означает, что вы можете написать свой собственный обработчик парольной фразы, используя предыдущий пример кода без установки ezPyCrypto. Здесь вы можете найти много примеров кода, как сделать это самостоятельно:
Поиск кода Nullege
Мое первое и альтернативное решение:
Вы можете использовать функцию python exec () и функцию командной строки "ssh-keygen" ( doc ):
ssh-keygen -p [-P old_passphrase] [-N new_passphrase] [-f keyfile]
.