python - 密码学 - 生成新的 RSA 私钥

标签 python python-3.x cryptography rsa python-cryptography

我需要一个函数来生成一个新的 RSA 私钥,然后可以将其作为字符串存储在 Django 模型字段中。 我正在使用 cryptography==2.1.4 .

我认为我已经通过以下方式实现了这一目标:

from cryptography.hazmat.primitives import serialization
from cryptography.hazmat.primitives.asymmetric import rsa
from cryptography.hazmat.backends import default_backend

KEY_SIZE = 2048
PUBLIC_EXP = 65537
private_key = rsa.generate_private_key(
    public_exponent=PUBLIC_EXP,
    key_size=KEY_SIZE,
    backend=default_backend()
)
private_key_str = private_key.private_bytes(
    encoding=serialization.Encoding.PEM,
    format=serialization.PrivateFormat.TraditionalOpenSSL,
    encryption_algorithm=serialization.NoEncryption()
).decode()

但显然我在这里遗漏了一些东西或一些步骤(尽管我应该知道为什么......)因为 private_key_str 始终具有相同的值。

这里有什么建议吗?

最佳答案

我用 cryptography==2.1.4 尝试你的代码,我发现 private_key_str 不一样。我想你可能没有仔细比较这两个字符串。

它们都使用 PEM 编码的 PKCS#1 结构来对 key 进行编码,因此它们具有相似的结构。

private_key1

-----BEGIN RSA PRIVATE KEY-----
MIIEowIBAAKCAQEAspdHsnVqiY0RFYVAHcqa9AQvZC4u7gGv36wWCEUIlemJx2L7
1UvAbD5b/n/RPp4nw2xTIpSFguC+d4t5IaomQR7WR0aCcWda9SveNk4KyJmnHUox
Z6BBz4vBhdLWLLwZwxGsmuml60Wv5JMVEbf0lDgZqjIBMH0W5hFxa6f3AvI2L2Xf
LzwhfcyDMBIENx47aDFyWwfJvkIotFcLS9gYvo5KQXCdoHMbkoygF2cF+JAfSPEb
HaRw0qCOIDb0pC/L8HUxyiSeGH9eu93KyweRTqoXdkWdmKLYlJHUsdv24xrUxeA3
rARho2flkL/kz6AKO4NJJy+pvDCCtk8PW+HnTwIDAQABAoIBAD8587Yof5lHCf9W
d4aUjhtJyAVtnEvC6SME55/x4MJCNfcTAhlXgj5QLX2Cfu/uSiGTnjMl5caaDpSA
GlhixrxTUIVXXyMK9lbKOxd6tbKjQ1jJRYhsYiA6WD8qj4yy42P+Q99sTMNonocL
02+8cqhu3Bc3MNib0JmPH1p/0qGFy1BsKVUAajiOfFAA8phKyBa1gRON8CtDihLc
oTFfr5b3oaYCBsfA/YYnvf0fEsBrX/xPKVqG5NRVg0dT9op6Z+PBWOZeqSEIk0OV
KNuFTB/xP7oLJgjO6A9upnSHauFZu0sT9UXa9PdTfb8H6zaRwwwqsbCljG0jHUdo
/FcJF8ECgYEA3TbmmkVVX5no6jC1b0bAoWfgqvCLEoBAXEKIbLEYrQ9snfB0bHR8
vS/XydhUvD2Ysf/J+hEHQg8ScQgrOUkkpl2Az88pN17eYIA/i1/yJ6rL2Ju/qOcN
Omo+Zk8sZR3xLt5zXqeNuC7UkuQVg0aQ1JDxszZEkFCf/Wwq64AsoBECgYEAzqyM
UEPwFAj/gL2LM/DFDDnZT2z4NMS6y0rqzHAPcn7hJGjG6dp4o3cEJPM3GObKUT3z
wrzy/Iw6rq7h8DOOHFklt6uAVrrYiFlQ1OSgl/H4a7Ohpi33UjqU3Hy0TFxcBSLy
xNQAcIqSQHxGs42je4JjLiUX4jNor12fm6j7cV8CgYBUGuyAGP5Fk8nHSG+i+B6C
/3Ce7Uei6BoQOceOs6JzIdslDWfmWD+Y2ljLyDEnRLAKdPsA1XqR9hMH4Jg2doW1
rvUrjVLZV3tq6ze9sOPrivdnyoeLGxWfcQd6dH2nkEPDkxYAFeo+7acqlgdL2wdz
mgwbG/XjfJPnkTmcQiY1UQKBgQCAMEPjcRASzTX02xvhPoBpwePIwNT+ndsiRrh1
zze1k37/v0FJQSm8chCO/o/5EQUB+QQdkGbCQBQRzwTyoHePm7eqQWSb5s5xW7yo
H5qARCQKYWNtGGujhBRa4bpO9qZYxUGA1eHj6/8kojCUI9D3xXrQ307+DVbsFozt
1pUGzwKBgEKDzYhr1AQjOysqxthRATj+UTPIODFuhUHH9/RowCa9wCWEEKnpv7Wa
pfmBJd3FkFC4+UQ6b5LyRc4dlMtDh8+GuomUFFPTBrU8oDLzPBZiotIBt1bmd/cq
JsJbimkNvUXY1XY03VajNbAXdsNDUAgbNx00zuOFvD/66Os0hclD
-----END RSA PRIVATE KEY-----

private_key2

-----BEGIN RSA PRIVATE KEY-----
MIIEowIBAAKCAQEAxJuI29hhZTLyVx/ePLG30I/DrVMUykeV6QeydwDkxRbI/ZKZ
JhCGyV8NtCyGKHa+vsRjwzzTGgBhpsxMzOwB37liGVlZ/LN0QC5rZ0hR9nVkTted
H8jkMlwV5/R8nMq35yDAdTtWxF2ngM9OLNDRPmyTa7AA0sZLfYYn8UwKTFikfPZ6
XLhb0YoApj6hUDAwKPj4rje3VcxVpLpv/Tfr+Z1qw9YSWCcFdLA89ppQqB0/TfZw
chpCdC5tpmzeucAz2QvuWBe4/LBAJ2vc/Hv4vCztQi2JtN/LJLjfSxdXM1IC4Acu
BqhdQ3sjkHYscp3TTTeVjuhnL+wF4OqtXejK3wIDAQABAoIBAH960gyqisxRcm0n
jrQQD7292gUCf9KBBCTrBr6+55cbpQs2CPNzd9IOPhZ7YCnQhPGw6Xboc4DCio7a
nVmqFbT4wTDqjLybp18OOjnn3K1PhNDSYWEAo2Y760BReJM5pnDI/cGFzkbY6wlM
YcYRR/uP7y6+GmqQhNZJLJD62xqQovMGxFlmqEEjBnru+5Zabbok7DMgzBXE/T/K
dNQC7tfm7KRn3eFxYzAlhUsime0/k4eQGJp+XMsI+SqUYQCkKicI/AgNW6nXsGT/
YMT/B0XDYvT+KCxnhW9pOAof6FbQ8XWrx4VfW73H0TSGtCo4OWi55OoIZDRz/5ff
b7lsAOECgYEA+HVz6heFNAt4v4cTrXHFZFkBlLoAtm/6NRnDBKHbdg6wmnVV3aJ7
Z3YdDSNlvmov5whLKwOLZlI0jONeZnKCaJAz8uOYOF8hoMFehurhsJUfHhQLzZVj
6BD2e62a8R377KFlMIY0JsHWkEwZEQO/KakqdY90xIE7LMTncz9SaHcCgYEAypMx
aCiyzVAXHMVY9rRLa7Iqdot+OnzF86T7RW/F8T5md3y6lJX2Y1HdHxLDYPm1xXBo
gg7Du/Eq/+L24YGJzg+CQs00Z3l5mJxt9OSsjuXqFJQqf9PeJUeNkhdY77xuzBfH
tS2dChmRfwLRqaatYq4RZ4s4tByib/8vjo1RMtkCgYAA5Qth0GveYBwzNF1RxpMb
ZWaoDnNqNMUF4+3b2mlb53mjVMDWZ3tiR/6ayYHYSbGad2Et6nlaCPm/eCIi5E6r
6bkGKuOlcFJCre+VNMtTQ3Y1OYVBXERb1ZPNpjZkn+MEWyBuKE2PxirrohqFASpz
D/TjL30QKBb6dksPEy9MyQKBgQCN7r+pOQq+K6Vl9Se2AvDtDjIOSQIyPIX9hdS/
++Z2dsAYa/3WaZPuVsdVJDJcWdlv8qhmp62gmwMDsqRDsB07kUY1Q825yjTWJpQs
B6SXoqN1s7JrSajV+eJJP66CmkYPHYJBgSoMj4mPsgvwj+XfxBJRuAwMthth2Swa
9wyzUQKBgCp9eBK/0mgEjRr1JacjDVZEcsIcj/erGA2FwoGRu1fXPevi1ggyJIKU
DA+aRZehHqUVOafNQsMJafMqFTTJxYtgkzMRqxfDz6HpNC1hWyvE5/STswEl5Izu
l2QSz4TU1Yk2wnrtDlIVkb6gM/JkQiOkSG5PSx9EAACZ1Yoz+NqS
-----END RSA PRIVATE KEY-----

关于python - 密码学 - 生成新的 RSA 私钥,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54343899/

相关文章:

python - 从给定多索引的 pandas 数据帧中查找

python - 部署 CherryPy(守护进程)

python - 只读特定行

python - 有没有办法重置 Kite Autocomplete 的 AI?

c# - OpenSSL无法验证ECDSA签名C++、C#验证正确

math - 带圆圈的加号是什么意思?

security - 为什么在 SSL/TLS 重新协商时需要服务器证书验证?

python - 从多维列表创建字典,无需重复键

python - 为什么我不能在graphicsview上使用鼠标事件(mouseMoveEvent, mouseReleaseEvent)?

python - 使用Python 3.x打印实时SSH输出