[英]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.