gpt4 book ai didi

java - 如何在 X509 中编码专有的非对称公钥

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

我正在开发一个 Java 密码库,它创建了自己专有的非对称密码系统(我们这样做的正当理由太长,无法在此处解释)。这个非对称密码系统是 ElGamal 的一个实现。该库提供了一种生成 key 对以及加密和解密数据的机制。

这个密码系统的公钥和私钥目前没有实现任何接口(interface)(它们与 java.security 的 key 没有关系)。

但是,我们现在有需要在 X509 证书中存储 ElGamal 公钥的要求。为此,我们计划在我们的专有公钥中实现 java.security.PublicKey 接口(interface),因为这将允许我们将我们的专有公钥作为 PublicKey 传递(以允许将其存储在证书中)。然而,实现 PublicKey 意味着我们现在必须在我们的 PublicKey 中实现三个新方法,它们是:

  • 公共(public)字符串 getAlgorithm()
  • 公共(public)字符串 getFormat()
  • 公共(public)字节[] getEncoded()

getEncoded() 方法应该返回以某种方式编码的公钥。按照惯例,我们希望使用 X509 格式对数据进行编码。

我们的问题是:如何使用这种编码格式对任意对象的内容进行编码?

最佳答案

X.509 规定了证书的格式。公钥本身只是其中的一部分。在 X.509 数据结构中,它存储为位串(因此基本上是原始二进制数据)。

getEncoded 方法通常返回 SubjectPublicKeyInfo 结构的 DER 编码,该结构包含编码为 ASN.1 对象标识符的算法和公钥本身的位。

documentation of Key提供更多细节。

关于java - 如何在 X509 中编码专有的非对称公钥,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25382733/

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