Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.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中不支持RSA密钥格式_Python_Cryptography_Rsa - Fatal编程技术网

python中不支持RSA密钥格式

python中不支持RSA密钥格式,python,cryptography,rsa,Python,Cryptography,Rsa,我想用我的公钥加密纯文本。为此,我使用pycryptodome模块编写了如下代码 from Cryptodome.Cipher import PKCS1_v1_5 from Cryptodome.PublicKey import RSA from base64 import b64decode,b64encode key = '30820122300d06092a864886f70d01010105000382010f003082010a0282010100f357429c22add0d547

我想用我的公钥加密纯文本。为此,我使用pycryptodome模块编写了如下代码

from Cryptodome.Cipher import PKCS1_v1_5
from Cryptodome.PublicKey import RSA
from base64 import b64decode,b64encode

key = '30820122300d06092a864886f70d01010105000382010f003082010a0282010100f357429c22add0d547ee3e4e876f921a0114d1aaa2e6eeac6177a6a2e2565ce9593b78ea0ec1d8335a9f12356f08e99ea0c3455d849774d85f954ee68d63fc8d6526918210f28dc51aa333b0c4cdc6bf9b029d1c50b5aef5e626c9c8c9c16231c41eef530be91143627205bbbf99c2c261791d2df71e69fbc83cdc7e37c1b3df4ae71244a691c6d2a73eab7617c713e9c193484459f45adc6dd0cba1d54f1abef5b2c34dee43fc0c067ce1c140bc4f81b935c94b116cce404c5b438a0395906ff0133f5b1c6e3b2bb423c6c350376eb4939f44461164195acc51ef44a34d4100f6a837e3473e3ce2e16cedbe67ca48da301f64fc4240b878c9cc6b3d30c316b50203010001\n\'

plain = 'lee'
keyPub = RSA.importKey(key)
cipher = PKCS1_v1_5.new(RSA.import_key(keyPub))
print(cipher.encrypt(plain))
但是,在
keyPub=RSA.importKey(key)


如何修复以下错误?

这是一个X.509/SPKI格式的RSA公钥,编码为十六进制字符串,可以在线验证,例如在。但是,必须删除结尾处的
\n\

此fromat需要二进制(或PEM编码)数据,即密钥必须是十六进制解码的。在实例化对象时可以直接使用导入的键(即不需要使用
import\u key
进行第二次调用)

以下代码起作用:

from Cryptodome.Cipher import PKCS1_v1_5
from Cryptodome.PublicKey import RSA

key = '30820122300d06092a864886f70d01010105000382010f003082010a0282010100f357429c22add0d547ee3e4e876f921a0114d1aaa2e6eeac6177a6a2e2565ce9593b78ea0ec1d8335a9f12356f08e99ea0c3455d849774d85f954ee68d63fc8d6526918210f28dc51aa333b0c4cdc6bf9b029d1c50b5aef5e626c9c8c9c16231c41eef530be91143627205bbbf99c2c261791d2df71e69fbc83cdc7e37c1b3df4ae71244a691c6d2a73eab7617c713e9c193484459f45adc6dd0cba1d54f1abef5b2c34dee43fc0c067ce1c140bc4f81b935c94b116cce404c5b438a0395906ff0133f5b1c6e3b2bb423c6c350376eb4939f44461164195acc51ef44a34d4100f6a837e3473e3ce2e16cedbe67ca48da301f64fc4240b878c9cc6b3d30c316b50203010001'

plain = b'lee'
keyPub = RSA.import_key(bytes.fromhex(key))
cipher = PKCS1_v1_5.new(keyPub)
print(cipher.encrypt(plain).hex())

在我看来,这不像RSA密钥。它应该是什么格式?文档告诉您RSA.importKey支持什么格式/它对我有用thx!
from Cryptodome.Cipher import PKCS1_v1_5
from Cryptodome.PublicKey import RSA

key = '30820122300d06092a864886f70d01010105000382010f003082010a0282010100f357429c22add0d547ee3e4e876f921a0114d1aaa2e6eeac6177a6a2e2565ce9593b78ea0ec1d8335a9f12356f08e99ea0c3455d849774d85f954ee68d63fc8d6526918210f28dc51aa333b0c4cdc6bf9b029d1c50b5aef5e626c9c8c9c16231c41eef530be91143627205bbbf99c2c261791d2df71e69fbc83cdc7e37c1b3df4ae71244a691c6d2a73eab7617c713e9c193484459f45adc6dd0cba1d54f1abef5b2c34dee43fc0c067ce1c140bc4f81b935c94b116cce404c5b438a0395906ff0133f5b1c6e3b2bb423c6c350376eb4939f44461164195acc51ef44a34d4100f6a837e3473e3ce2e16cedbe67ca48da301f64fc4240b878c9cc6b3d30c316b50203010001'

plain = b'lee'
keyPub = RSA.import_key(bytes.fromhex(key))
cipher = PKCS1_v1_5.new(keyPub)
print(cipher.encrypt(plain).hex())