я использовал модуль PyCrypto для создания/закрытой пары открытого RSA ключа и пытаюсь импортировать ключи, отправив открытый ключ в качестве аргумента командной строки:Как импортировать ключи RSA по аргументу командной строки?
from Crypto.PublicKey import RSA
from Crypto import Random
import sys
input_key = sys.argv[1]
print('\n')
print(type(input_key))
print('\n')
print(input_key)
print('\n')
public_key = RSA.importKey(input_key)
print(type(public_key))
но я получаю результат:
$ python3 encrypt.py '-----BEGIN PUBLIC KEY-----\nMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCaIRYO3hxr0ObcYcgKtxFequ6p\n9HVV8E95ghUUHmydVJYy16Ip9F6ik7G8wBU7X3VIfjdxHAtrwY9doCy8Ype6NNio\nS/ErGRtUQ1jgyT2f9okIdroEipnh1zwbXQcxveaxlwBhp7OFGZ/0W3FKgJLYtyzW\nEhfPO+8GkT0eLH5FaQIDAQAB\n-----END'
>>> <class 'str'>
-----BEGIN PUBLIC KEY-----\nMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCaIRYO3hxr0ObcYcgKtxFequ6p\n9HVV8E95ghUUHmydVJYy16Ip9F6ik7G8wBU7X3VIfjdxHAtrwY9doCy8Ype6NNio\nS/ErGRtUQ1jgyT2f9okIdroEipnh1zwbXQcxveaxlwBhp7OFGZ/0W3FKgJLYtyzW\nEhfPO+8GkT0eLH5FaQIDAQAB\n-----END PUBLIC KEY-----
Traceback (most recent call last):
File "encrypt.py", line 13, in <module>
public_key = RSA.importKey(input_key)
File "/usr/lib/python3/dist-packages/Crypto/PublicKey/RSA.py", line 638, in importKey
if lines[1].startswith(b('Proc-Type:4,ENCRYPTED')):
IndexError: list index out of range
Но когда я копировать вставить один и тот же ключ в Python интерпретатора, я получаю это:
>>> input_key = '-----BEGIN PUBLIC KEY-----\nMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCaIRYO3hxr0ObcYcgKtxFequ6p\n9HVV8E95ghUUHmydVJYy16Ip9F6ik7G8wBU7X3VIfjdxHAtrwY9doCy8Ype6NNio\nS/ErGRtUQ1jgyT2f9okIdroEipnh1zwbXQcxveaxlwBhp7OFGZ/0W3FKgJLYtyzW\nEhfPO+8GkT0eLH5FaQIDAQAB\n-----END PUBLIC KEY-----'
>>> pub_key = RSA.importKey(input_key)
>>> type(pub_key)
<class 'Crypto.PublicKey.RSA._RSAobj'>
Как импортировать их в качестве аргумента командной строки?
Вы передаете ключ wohle в качестве аргумента командной строки? Вероятно, вы потеряете символы новой строки из кодированного ключа, так как ваш первый аргумент состоит только из одной строки. Как именно вы называете свою программу? – mata
вся клавиша ввода права, я попытался ввести и распечатать ключ .. он работает абсолютно нормально .. –