gpt4 book ai didi

ASN.1 DER 格式的私钥

转载 作者:行者123 更新时间:2023-12-04 01:45:28 26 4
gpt4 key购买 nike

为什么模数用前导零填充?我正在阅读 PKCS#1 和 PKCS#8,但没有找到任何相关信息。
在 c# 中必须删除前导零,有人知道为什么吗?

http://etherhack.co.uk/asymmetric/docs/rsa_key_breakdown.html ,您可以看到模数和指数具有前导零。问题是他们为什么拥有它,我还没有在任何地方找到解释。

最佳答案

私钥值被编码为 ASN.1 INTEGER,它们是二进制补码格式的有符号值。当设置(无符号)RSA key 值的 MSB 时,前导零字节是必需的。设置没有前导零字节的 MSB 将意味着负值。

ASN.1 规范是免费的,链接自 Wikipedia .这里的相关部分在 X.690,“8.3 Encoding of an integer value”中。

我将在此处提供一个示例,以防链接页面消失。

如果您有 openssl,您可以使用以下命令生成测试 key :

openssl genrsa -out test.pem 512
openssl rsa -in test.pem -out test.der -outform der

以下是来自 test.der 的示例数据:
30 82 01 3bASN.1 SEQUENCE,长度 0x13b,内容如下
02 01 00版本:ASN.1 INTEGER,存储长度 1,值 0
02 41 00 c0 8e ... (65 个数据字节)
模数:ASN.1 INTEGER,存储长度 65,值 0xc08e...(需要前导零字节,因为模数 > 2^511)
02 03 01 00 01公共(public)指数:0x10001(不需要前导零字节,因为指数 < 2^23)
02 41 00 b5 87 ... (65 个数据字节)
私有(private)指数:0xb587 ...
02 21 00 e7 18 ... (33 个数据字节)
素数1:0xe718 ...
02 21 00 d5 43 ... (33 个数据字节)
素数2:0xd543 ...
02 20 75 67 a1 ... (32 个数据字节)
exponent1: 0x7567...(不需要前导零字节,因为指数 < 2^255)
02 20 0a f6 3f ... (32 个数据字节)
指数2:0x0af6 ...
02 21 00 c7 13 ... (33 个数据字节)
系数:0xc713...

关于ASN.1 DER 格式的私钥,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5974633/

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