gpt4 book ai didi

java - 如何将JAVA中的x509证书的公钥转换为十六进制

转载 作者:行者123 更新时间:2023-11-30 07:27:23 26 4
gpt4 key购买 nike

我们需要在项目中获取“x509 证书的公钥”。我们正在使用 x509Certificate.getPublicKey() API 获取 byte[],然后计算它的十六进制形式。例如,在 java 中计算的证书的十六进制形式的公钥如下

30820122300d06092a864886f70d01010105000382010f003082010a0282010100af240808297a359e600caae74b3b4edc7cbc3c451cbb2be0fe2902f95708a364851527f5f1adc831895d22e82aaaa642b38ff8b955b7b1b74bb3fe8f7e0757ecef43db66621561cf600da4d8def8e0c362083d5413eb49ca59548526e52b8f1b9febf5a191c23349d843636a524bd28fe870514dd189697bc770f6b3dc1274db7b5d4b56d396bf1577a1b0f4a225f2af1c926718e5f40604ef90b9e400e4dd3ab519ff02baf43ceee08beb378becf4d7acf2f6f03dafdd759133191d1c40cb7424192193d914feac2a52c78fd50449e48d6347883c6983cbfe47bd2b7e4fc595ae0e9dd4d143c06773e314087ee53f9f73b8330acf5d3f3487968aee53e825150203010001

但是当我们双击证书并在详细信息选项卡中看到公钥的值时,如下所示:

3082010a0282010100af240808297a359e600caae74b3b4edc7cbc3c451cbb2be0fe2902f95708a364851527f5f1adc831895d22e82aaaa642b38ff8b955b7b1b74bb3fe8f7e0757ecef43db66621561cf600da4d8def8e0c362083d5413eb49ca59548526e52b8f1b9febf5a191c23349d843636a524bd28fe870514dd189697bc770f6b3dc1274db7b5d4b56d396bf1577a1b0f4a225f2af1c926718e5f40604ef90b9e400e4dd3ab519ff02baf43ceee08beb378becf4d7acf2f6f03dafdd759133191d1c40cb7424192193d914feac2a52c78fd50449e48d6347883c6983cbfe47bd2b7e4fc595ae0e9dd4d143c06773e314087ee53f9f73b8330acf5d3f3487968aee53e825150203010001

我们发现JAVA api计算的值在开头多了44个字符,从第45个字符开始数据与windows计算的值相同。

任何人都可以帮助我确定如何计算与 Windows 计算相同的证书的公钥。

谢谢。

最佳答案

在 X509 证书中,公钥被编码到一个名为 SubjectPublicKeyInfo 的 ASN.1 结构中看起来像这样:

SubjectPublicKeyInfo  ::=  SEQUENCE  {
algorithm AlgorithmIdentifier,
subjectPublicKey BIT STRING }

算法字段标识 key 的类型(RSA、DSA、Diffie Hellman...),位串包含编码为取决于 key 类型的结构的公钥数据。

在您的情况下,第一个字节 [] 包含 SubjectPublicKeyInfo 的所有数据,包括顶级 SEQUENCE 标记、长度和 algorithm 字段以及 subjectPublicKey 字段。

第二个字节[] 仅包含第二个字段(即 BIT STRING)。在您的示例中,这是一个 RSA 公钥 encoded with this structure :

RSAPublicKey ::= SEQUENCE {
modulus INTEGER, -- n
publicExponent INTEGER } -- e

关于java - 如何将JAVA中的x509证书的公钥转换为十六进制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9767309/

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