标签:cryptography x509 bouncycastle android
只是我的项目的一些背景:
我正在使用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标准,而不必使用证书.
标签:cryptography,x509,bouncycastle,android 来源: https://codeday.me/bug/20191201/2084555.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。