Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x 如何通过命令行参数导入RSA密钥?_Python 3.x_Pycrypto - Fatal编程技术网

Python 3.x 如何通过命令行参数导入RSA密钥?

Python 3.x 如何通过命令行参数导入RSA密钥?,python-3.x,pycrypto,Python 3.x,Pycrypto,我一直在使用Pycrypto模块生成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

我一直在使用Pycrypto模块生成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
$python3 encrypt.py'----开始公钥----nmigfma0gcsqgsib3dqebaquaa4gnacbiqkbgqcairyo3hxr0obcyccgktxfeq6p\n9hv8e95ghuuuuhmydvjy16ip9f6ik7g8wbu7xvifjdxhatry9docy8ype6nnio\nS/ergrtuqyqytytxl2f9okidroeipnh1zwbxxxqcxveawbh7ofgz/0w3fkfklyjglyzwjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj
>>> 
-----开始公钥------\nIGFMA0GCSQGSIB3DQEBAQUA4GNADCBIQKBGQCAIRYO3HXR0OBCYCGKTXFEQUE6P\n9HVV8E95GhuuhmydVJYY16IP9F6IK7G8WBU7X3VIFJDXHATRY9DOC6NNIO\nS/ERGRUTUQ1JGYT2F9OKIDROEIPNH1ZWBXQCXVEAXLWBHP7OGZ/0W3FKJKGJLYTYZW\nEhfPO+8GKT0ELIDAQAB\h5END结束公钥-----
回溯(最近一次呼叫最后一次):
文件“encrypt.py”,第13行,在
公钥=RSA.importKey(输入密钥)
importKey中的文件“/usr/lib/python3/dist packages/Crypto/PublicKey/RSA.py”,第638行
if行[1].startswith(b('Proc-Type:4,ENCRYPTED')):
索引器:列表索引超出范围
但当我将同一个键复制粘贴到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'>
>>input_key='----开始公钥----nmigfma0gcsqgsib3dqebaquaa4gnacbiqkbgqcairyo3hxr0obcyccgktxfeq6p\n9hv8e95ghuuuhydvjy16ip9f6ik7g8wbu7xvifjdxhatry9docy8type6nnio\nS/ergrtuqyqtytxl2f9okidroeipnh1zwbxxqcqcxwb7fgz/0f3fklyjglyzwjjjjjjjjjzw\neg8h5fkkkkjjjjjjjjjjjjjjjkkkkkkkkkkkkjj
>>>pub_key=RSA.importKey(输入_key)
>>>类型(发布键)
如何将它们作为命令行参数导入?

执行时

$ python3 encrypt.py '-----BEGIN PUBLIC KEY-----\nMIG...' 如果您确实想使用带有转义的字符串,您可以在程序中自己处理转义,方法是执行
input\u key=sys.argv[1]。替换('\\n','\n')
,或者让shell执行转义,例如通过echo传递字符串:
$python3 encrypt.py'$(echo-ne'----BEGIN PUBLIC key-----\nMIG…)

执行时

$ python3 encrypt.py '-----BEGIN PUBLIC KEY-----\nMIG...'
如果您确实想使用带有转义的字符串,您可以在程序中自己处理转义,方法是执行
input\u key=sys.argv[1]。替换('\\n','\n')
,或者让shell执行转义,例如通过echo传递字符串:
$python3 encrypt.py'$(echo-ne'----BEGIN PUBLIC key-----\nMIG…)

是否提供wohle键作为命令行参数?您可能丢失了编码键中的换行符,因为您的第一个参数只包含一行。你到底是怎么调用你的程序的?整个按键输入正确,我已经试着输入和打印按键了。。它工作得非常好..您提供wohle键作为命令行参数?您可能丢失了编码键中的换行符,因为您的第一个参数只包含一行。你到底是怎么调用你的程序的?整个按键输入正确,我已经试着输入和打印按键了。。它工作得非常好。怎么做?我在的位置尝试了Shift+Enter,但它不起作用。您不需要做任何特殊的操作,当您在未终止的字符串文本中按Enter键时,您应该能够在下一行继续。如何执行此操作?我在的位置尝试了Shift+Enter,但它不起作用。您不需要做任何特殊的操作,当您在未终止的字符串文本中按Enter键时,您应该能够在下一行继续。