Python 3.x 如何在Python3中使用RSA或类似的加密?

Python 3.x 如何在Python3中使用RSA或类似的加密?,python-3.x,encryption,rsa,public-key-encryption,Python 3.x,Encryption,Rsa,Public Key Encryption,如何在Python3中使用RSA或类似的公钥-私钥加密,最好使用内置模块?到目前为止,我找到的所有资源都是针对Python2.7的,Python3的标准库中没有太多关于加密的内容。取而代之的是散列库 如果您需要安全的哈希或消息摘要算法,那么hashlib模块将介绍Python的标准库 如果要使用RSA加密数据,则需要访问公共/私有RSA密钥对,或者需要生成自己的密钥对。对于这个例子,我们将只生成我们自己的。由于这相当容易,我们将在Python的解释器中执行: 您必须首先安装python 3的Py

如何在Python3中使用RSA或类似的公钥-私钥加密,最好使用内置模块?到目前为止,我找到的所有资源都是针对Python2.7的,Python3的标准库中没有太多关于加密的内容。取而代之的是散列库 如果您需要安全的哈希或消息摘要算法,那么hashlib模块将介绍Python的标准库

如果要使用RSA加密数据,则需要访问公共/私有RSA密钥对,或者需要生成自己的密钥对。对于这个例子,我们将只生成我们自己的。由于这相当容易,我们将在Python的解释器中执行: 您必须首先安装python 3的PyCrypto包

>>> from Crypto.PublicKey import RSA

>>> code = 'nooneknows'

>>> key = RSA.generate(2048)

>>> encrypted_key = key.exportKey(passphrase=code, pkcs=8, 

 protection="scryptAndAES128-CBC")

>>> with open('/path_to_private_key/my_private_rsa_key.bin', 'wb') as f:

 f.write(encrypted_key)

>>> with open('/path_to_public_key/my_rsa_public.pem', 'wb') as f:

 f.write(key.publickey().exportKey())
首先,我们从Crypto.PublicKey导入RSA。然后我们创建一个愚蠢的密码。接下来,我们生成2048位的RSA密钥。现在我们来谈谈好东西。要生成私钥,我们需要调用RSA key实例的exportKey方法,并为其提供密码、使用哪种PKCS标准以及使用哪种加密方案来保护私钥。然后我们将文件写入磁盘


接下来,我们通过RSA key实例的publickey方法创建公钥。在这段代码中,我们使用了一种快捷方式,将exportKey调用与publickey方法调用链接起来,将其写入磁盘。

下面是我在Python 3中使用加密库实现的RSA加密(使用命令
pip install pycryptodome
安装)

以下类的用法如下所示:

 - cipher = RSA_Cipher()
 - cipher.generate_key(1024) #key length can be 1024, 2048 or 4096
 - cipher.encrypt("hello world") #automatically uses generated key
 - cipher.decrypt("nt3vNNqzyAo2SINPgsb/eOLU2PD0DF0EstvnIHUmYGX4CVAvS0pDEboqGcuitYAzSV10Ii+fliwihu/L0ISrL6w/tRDQILHFM5PrN2pqzK+Lu6QHKUShFdQtikduo1KHXGlJNd25sVlDOhWAq/FK/67Yeoyz6fSP6PNXRjX7Q+Q=)

您是否尝试过将Python2.7用于Python3的方法?可以为这两者安装许多库。PKCS#1 v1.5加密已损坏,您应该改用RSA OAEP(
Crypto.Cipher.PKCS1_OAEP
)。
 - cipher = RSA_Cipher()
 - cipher.generate_key(1024) #key length can be 1024, 2048 or 4096
 - cipher.encrypt("hello world") #automatically uses generated key
 - cipher.decrypt("nt3vNNqzyAo2SINPgsb/eOLU2PD0DF0EstvnIHUmYGX4CVAvS0pDEboqGcuitYAzSV10Ii+fliwihu/L0ISrL6w/tRDQILHFM5PrN2pqzK+Lu6QHKUShFdQtikduo1KHXGlJNd25sVlDOhWAq/FK/67Yeoyz6fSP6PNXRjX7Q+Q=)