当前位置: 首页 > 知识库问答 >
问题:

Python中的加密RSA

元英朗
2023-03-14

我正在检查一个用Python编写的代码,它用来生成一个RSA公钥对。

它会生成keypair,但是在代码的末尾,它会再次运行ssh-keygen。我不知道为什么这样做。因为,rsa.generate()本身将生成keypair,我们将其导出到两个单独的文件中。为什么需要再次运行ssh-keygen?

下面是代码中的几行:

keypair = RSA.generate(1024, randfunc)

with open("pub", "w") as pubfile, open("id_rsa", "w") as privfile:
    privfile.write(keypair.exportKey())
    pubfile.write(keypair.publickey().exportKey())

system("ssh-keygen -m PKCS8 -i -f pub > id_rsa.pub && rm pub")

文件pub将存储公钥,id_rsa将存储来自rsa.generate()函数生成的keypair的私钥。

现在,为什么它在末尾运行ssh-keygen命令?

此外,它不接受-i参数的任何输入文件,-f参数接受已经生成的公钥名称pub。

执行代码后,我得到两个文件,id_rsa和id_rsa.pub

id_rsa是使用rsa.generate()生成的私钥,但id_rsa.pub存储ssh-keygen命令的结果。

我需要一些帮助来理解在脚本末尾调用ssh-keygen的原因以及传递给ssh-keygen的参数。-i应该被传递一些值,并且-f应该有输出文件名,而不是输入。

注意:我读到这样做是为了使用ssh-keygen将公钥从OpenSSL格式转换为OpenSSH格式,以便它以ssh-rsa开头,而不是以BEGIN public key开头。

这是否意味着相应私钥的格式也要更改?

因为它是从,

开始私钥

共有1个答案

蒲勇
2023-03-14

运行ssh-keygen将生成的PEM格式公钥转换为OpenSSH格式公钥是正确的。
据我所知,在Python中没有真正好的方法来实现这一点。

OpenSSH格式仅存在于公钥。
因此,如果私钥以
---------BEGIN Private key-----------------BEGIN RSA Private key--------开头,则不需要转换该私钥

 类似资料:
  • 我需要在Python中使用RSA加密和解密的帮助。 我正在创建一个私钥/公钥对,用密钥加密一条消息,并将消息写入一个文件。然后我从文件中读取密文,并使用密钥解密文本。 谁能帮我写这个代码,让解密从文件中读取密文,然后使用密钥解密密文?

  • 我理解哈希和加密之间的区别。我正在寻找一种在Python中实现加密/解密字符串的简单方法。我在网上找到的大多数方法都是关于使用散列算法(MD5-SHA-1等)来进行单向散列。但不幸的是,哈希是不可逆的。有什么建议吗?

  • 我已经看过了AES-Encryption with Crypto(node js)/decryption with Pycrypto(python)的文章,因为我正试图做完全相反的事情,但我似乎做得不对。这是我到目前为止试过的。。。 Python加密 节点。js解密 每次我尝试运行节点时。js解密,我最终得到错误消息:

  • 本文向大家介绍python RSA加密的示例,包括了python RSA加密的示例的使用技巧和注意事项,需要的朋友参考一下 RSA加密是一种非对称加密,通常使用公钥加密,私钥解密,私钥签名,公钥验签。 在公开密钥密码体制中,加密密钥(即公开密钥)PK是公开信息,而解密密钥(即秘密密钥)SK是需要保密的.RSA算法通常是先生成一对RSA密钥,其中之一是保密密钥,由用户保存;另一个为公开密钥,可对外公

  • 我已经尝试使用cipher.getinstance(“rsa/ecb/pkcs1padding”),但没有给出预期的结果。 感谢所有的帮助。祝你有美好的一天。

  • 问题内容: 我在PHP中有一个函数,可按如下所示加密文本: 如何在Python中解密这些值? 问题答案: 要解密这种加密形式,您将需要获得Rijndael版本。在这里可以找到一个。然后,您将需要模拟PHP Mcrypt模块中使用的键和文本填充。它们增加了填充文本和键的正确大小。他们使用的是256位块大小,并且您提供的密钥使用的密钥大小为128(如果您提供更大的密钥,则密钥大小可能会增加)。不幸的是