【问题标题】:X.509 Certification for Android适用于 Android 的 X.509 认证
【发布时间】:2011-12-27 23:00:59
【问题描述】:

我的项目的一些背景:

我正在使用 ECDH for Android (BouncyCastle) 实施 SMS 加密程序,我需要通过 SMS 发送我的公钥。功能方面,一切正常,但我对我实现的 X.509 代码有点怀疑。

在发送方:

        byte[] pubEnc = aKeyPair.getPublic().getEncoded();
        X509EncodedKeySpec  pubX509 = new X509EncodedKeySpec(pubEnc);

pubX509 然后被编码成 Base64 并通过 SMS 发送

在接收方:

        KeyFactory          keyFac = KeyFactory.getInstance("ECDH", "SC");
        X509EncodedKeySpec  pubX509 = new X509EncodedKeySpec(SharedS);
        ECPublicKey         pubKey = (ECPublicKey)keyFac.generatePublic(pubX509);

接收到的值被Base64解码成SharedS,然后被转换成一个新的pubX509

正如我所提到的,在实现方面,这段代码似乎运行良好,但是我想知道我是否正确地实现了 X509。

任何建议将不胜感激。

【问题讨论】:

  • 如果它工作正常,那你在问什么?
  • 想知道这是否是实现 X509 的正确方法。我在 X509 上做了一点阅读,有人提到需要 CA。这是由设备自动生成的,因为我没有指定任何内容?

标签: android cryptography bouncycastle x509


【解决方案1】:

Sun(现在是 Oracle)将其称为 X509EncodedKeySpec 的事实仅仅是因为公钥是使用更大的 X.509 证书标准中指定的格式编码的。对于 Internet,X.509 证书的正确实现在 RFC 5280 中指定。如您所见,这个 RFC 的长度超过 140 页。在整个文档中,这 3 行描述了如何表示公钥:

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

这是由 Java 类 X509EncodedKeySpec 生成的格式。您可以忽略 X509 标准的所有其余部分,不必使用证书。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-02-22
    • 1970-01-01
    • 2020-01-30
    • 2012-07-14
    • 2011-09-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多