首页 > 解决方案 > 如何获取用户输入,而不是将其转换为字符串数据类型?

问题描述

我有钥匙

b'-----BEGIN RSA PRIVATE KEY-----\nMIIDCgIBAAKBpwYMzwEMAwLajdq74D0Q7NRXICJr/EZHI6z0NcmVbiAj139f7apO\nWG0KV9MJVjENFkh1Ld64B2GY8Ibq7/jCz/nPU67eQPmAKU59COzGK0+WSiDJ+twE\nLwH0eqzvC6DauDngw2biWIR6p/A9OHFXm2xANW1CPq64a/h9IFlXslOhHtwjfv8k\nN0mZ/PHK9vxWJlWwxEmI/sBXJlAa1fxxCl62H2N4YIvrAgMBAAECgacCOSrJY7Sn\nk9GVlH1vc4zU67+vZqeq2/HMWWJ61iNGRGWpNYONloUAbVChCUlXdUu/DPDybAaq\nYx3hNu1BKbZsQziphpuyFNsZMPHasWixMrXDHvTWUcEuOYKjk4EksDsCplo1BryY\n+O6kel711Xi6zVXEt/1aWc8s6KP1sIPunSbUh4m9BIPQzrQ6ImdgY0XtSqpIvw2I\n2zPFnRb2ZsMx7KgnXt1VlzX2g=\n-----END RSA PRIVATE KEY-----'

我需要将此作为输入

key = input("enter your key")

当我这样做时,密钥将转换为字符串。

"b'-----BEGIN RSA PRIVATE KEY-----\nMIIDCgIBAAKBpwYMzwEMAwLajdq74D0Q7NRXICJr/EZHI6z0NcmVbiAj139f7apO\nWG0KV9MJVjENFkh1Ld64B2GY8Ibq7/jCz/nPU67eQPmAKU59COzGK0+WSiDJ+twE\nLwH0eqzvC6DauDngw2biWIR6p/A9OHFXm2xANW1CPq64a/h9IFlXslOhHtwjfv8k\nN0mZ/PHK9vxWJlWwxEmI/sBXJlAa1fxxCl62H2N4YIvrAgMBAAECgacCOSrJY7Sn\nk9GVlH1vc4zU67+vZqeq2/HMWWJ61iNGRGWpNYONloUAbVChCUlXdUu/DPDybAaq\nYx3hNu1BKbZsQziphpuyFNsZMPHasWixMrXDHvTWUcEuOYKjk4EksDsCplo1BryY\n+O6kel711Xi6zVXEt/1aWc8s6KP1sIPunSbUh4m9BIPQzrQ6ImdgY0XtSqpIvw2I\n2zPFnRb2ZsMx7KgnXt1VlzX2g=\n-----END RSA PRIVATE KEY-----'"

因此,我不能将它用于创建密钥的目的。如果我对此密钥进行编码,结果将变为:

b"b'-----BEGIN RSA PRIVATE KEY-----\nMIIDCgIBAAKBpwYMzwEMAwLajdq74D0Q7NRXICJr/EZHI6z0NcmVbiAj139f7apO\nWG0KV9MJVjENFkh1Ld64B2GY8Ibq7/jCz/nPU67eQPmAKU59COzGK0+WSiDJ+twE\nLwH0eqzvC6DauDngw2biWIR6p/A9OHFXm2xANW1CPq64a/h9IFlXslOhHtwjfv8k\nN0mZ/PHK9vxWJlWwxEmI/sBXJlAa1fxxCl62H2N4YIvrAgMBAAECgacCOSrJY7Sn\nk9GVlH1vc4zU67+vZqeq2/HMWWJ61iNGRGWpNYONloUAbVChCUlXdUu/DPDybAaq\nYx3hNu1BKbZsQziphpuyFNsZMPHasWixMrXDHvTWUcEuOYKjk4EksDsCplo1BryY\n+O6kel711Xi6zVXEt/1aWc8s6KP1sIPunSbUh4m9BIPQzrQ6ImdgY0XtSqpIvw2I\n2zPFnRb2ZsMx7KgnXt1VlzX2g=\n-----END RSA PRIVATE KEY-----'"

因此我仍然无法使用它。

如何将输入作为字节?

标签: pythonencodingcryptography

解决方案


像 ShellCode 所说的那样进行编辑,因为密钥流已经包含换行符,这将导致input过早返回,因此您必须继续阅读直到密钥流结束,这意味着在-----END RSA PRIVATE KEY-----或直接从文件中读取此密钥。

key = ""
print("Enter your key: ")
while True:
    key += input()
    if "-----END RSA PRIVATE KEY-----" in key:
        break
key_bytes = bytes(key, encoding="ascii")

这样您就可以毫无问题地粘贴整个密钥。另外,当您输入密钥时,不要输入,b'-----BEGIN RSA PRIVATE (rest of key)而是直接输入密钥,而无需b'在密钥的开头和'结尾(仅输入密钥数据),如-----BEGIN RSA PRIVATE (rest of key). 所以整个关键将是

-----BEGIN RSA PRIVATE KEY-----\nMIIDCgIBAAKBpwYMzwEMAwLajdq74D0Q7NRXICJr/EZHI6z0NcmVbiAj139f7apO\nWG0KV9MJVjENFkh1Ld64B2GY8Ibq7/jCz/nPU67eQPmAKU59COzGK0+WSiDJ+twE\nLwH0eqzvC6DauDngw2biWIR6p/A9OHFXm2xANW1CPq64a/h9IFlXslOhHtwjfv8k\nN0mZ/PHK9vxWJlWwxEmI/sBXJlAa1fxxCl62H2N4YIvrAgMBAAECgacCOSrJY7Sn\nk9GVlH1vc4zU67+vZqeq2/HMWWJ61iNGRGWpNYONloUAbVChCUlXdUu/DPDybAaq\nYx3hNu1BKbZsQziphpuyFNsZMPHasWixMrXDHvTWUcEuOYKjk4EksDsCplo1BryY\n+O6kel711Xi6zVXEt/1aWc8s6KP1sIPunSbUh4m9BIPQzrQ6ImdgY0XtSqpIvw2I\n2zPFnRb2ZsMx7KgnXt1VlzX2g=\n-----END RSA PRIVATE KEY-----

推荐阅读