繁体   English   中英

Python加密软件包RSA —将私钥保存到数据库

[英]Python cryptography package RSA — save private key to DB

我想使用RSA cryptography库中的RSA cryptography https://cryptography.io/en/latest/hazmat/primitives/asymmetric/rsa/

首先想想,我有我的秘密信息和两种类型的密钥(公共和私有):

from cryptography.hazmat.primitives.asymmetric import rsa 

SECRET = 'Ligula Venenatis Etiam Fermentum'

private_key = rsa.generate_private_key(
    public_exponent=65537,
    key_size=2048,
    backend=default_backend()
)

public_key = private_key.public_key() 

现在,我可以使用public_key加密味精:

from cryptography.hazmat.primitives import hashes
from cryptography.hazmat.primitives.asymmetric import padding

ciphertext = public_key.encrypt(
    SECERT,
    padding.OAEP(
        mgf=padding.MGF1(algorithm=hashes.SHA1()),
        algorithm=hashes.SHA1(),
        label=None
    )
)

大! 但是由于解密此消息,我需要使用private_key

plaintext = private_key.decrypt(
    ciphertext,
    padding.OAEP(
        mgf=padding.MGF1(algorithm=hashes.SHA1()),
        algorithm=hashes.SHA1(),
        label=None
    )
)

一切正常,唯一的问题是-我需要将私钥保存到数据库,然后再解密msg。 为此,不能使用RSA类实例。

也许我使用了错误的工具,或者只是不太了解这个库,但是到目前为止,我在文档中找不到答案。

将不胜感激:)

您可以序列化私钥而不进行加密。

pem = private_key.private_bytes(
    encoding=serialization.Encoding.PEM,
    format=serialization.PrivateFormat.TraditionalOpenSSL,
    encryption_algorithm=serialization.NoEncryption()
)
pem_data = pem.splitlines()[0]

将pem_data存储到数据库中,并在需要时从PEM重新加载为私钥。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM