gpt4 book ai didi

python - RSA公钥大小python

转载 作者:行者123 更新时间:2023-12-01 01:47:09 25 4
gpt4 key购买 nike

我需要在 Python 中使用 RSA 加密和解密的帮助。我尝试使用 RSA 2048 生成公钥和私钥,然后将公钥以十六进制形式发送到目的地。但是,我遇到了一个问题,生成的公钥大小大于 2048 位。我使用了以下脚本。我能知道为什么 key 大小大于 2048 位吗?

import Crypto
from Crypto.PublicKey import RSA

key = RSA.generate(2048)

binPrivKey = key.exportKey('DER')
binPubKey = key.publickey().exportKey('DER')

print(binPubKey.encode('hex'))

最佳答案

如果您想导出 key 以在其他地方使用,您可能会发现以 PEM 格式导出 key 更容易,如下所示:

>>> print(key.publickey().exportKey('PEM'))
-----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAtd2o9NY7P9CvXzECu4Ky
tieqYGAkOFrvuRnZpf3VP4VK0XMFSXM8/i5c0Q3Ml44If/zqVo/cXAO85YqV8ZtJ
YRtK9wcEr5epTX6iahxqgObgjFAbIRd6+we6znxBy+OG0JfEGn/GSBoq9g8mcr2e
HhKflp3B57X3+Qn1EbIYDFThWxy4HUZXh64LJiA5s0yeYzlGyjcC6R/Q59/CsyKP
K5LdcRp+CUrHfqwimiFUEZ+KNOob1klAyY4UKX9CI1AnWwZuSrmtbH+11Cfwgnnk
5RpqDvFNB30qsuD0elE+9zLOrq0jGicEoPtYAC3Z7phoODoR5vHbJ0R38qGItLMl
/wIDAQAB
-----END PUBLIC KEY-----

DER 格式包含相同的数据,但采用二进制形式,这可能不太便于移植。

key 长度不是 2048 位,因为公钥不仅包含模数 n,还包含加密指数 e

如果您只想要 2048 位模n,那么您可以按如下方式提取它:

>>> print(key.n)
22958437811749378126735904957386766172644032831528249830706401935201456098524775
93935742531467773637499977046456570312080938678104306767641814358663672099815985
37166257748568890906635464134344070390567919827141645499361303936386291407244786
88192939984906393278409502460458733268776367836168349094440408475953441252058796
28391483565417017898863634275114447933217938009351306832376849011143622553495660
63424041991601059614183085270921567421339154500925080655811214971889251644612159
17495238196068931081086234165571014450595993262432428425126883651547622718096951
337250550253777137307186332200705951701212904813212411391

是的,这是一个 2048 位值:

>>> print(key.n.bit_length())
2048

关于python - RSA公钥大小python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51180839/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com