适用于Android的X.509认证

只是我的项目的一些背景:

我正在使用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.

任何建议将不胜感激.

解决方法:

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

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

这是Java类X509EncodedKeySpec产生的格式.您可以忽略所有X509标准,而不必使用证书.

上一篇:(细节处理)P3093 [USACO13DEC]牛奶调度Milk Scheduling


下一篇:(五)如何动态修改定时器的下次执行时间