首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >BouncyCastle编码差异

BouncyCastle编码差异
EN

Stack Overflow用户
提问于 2015-10-15 21:04:37
回答 1查看 1.3K关注 0票数 0

我正在计算公钥的哈希值,以匹配ApplePay给我的内容。我不能让BouncyCastle在C#中以正确的格式给我公钥,所以我可以散列它。但是,我正在移植的Java版本工作得很好。OpenSSL也给出了正确的响应,但我更希望不必像BC那样处理OpenSSL。

Java:(作品)

代码语言:javascript
复制
ECPublicKey key = (ECPublicKey) certificate.getPublicKey();
byte[] keyBytes = key.getEncoded(); 

MessageDigest messageDigest = MessageDigest.getInstance("SHA256", PROVIDER_NAME);
byte[] keyHash = messageDigest.digest(keyBytes);    

String base64keyBytes = new String(Base64.encode(keyBytes));
//base64keyBytes == MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE+4wQWWRnPqGlsncZX17t0CfLOl6u
// 68aXUsqnzlIcpCdDukHhxibd2MjHPFGpnK3ZKdHxIFh+NBQvGssM5ncm1g==
// line break added for readability

OpenSSL:(作品)

代码语言:javascript
复制
openssl x509 -noout -pubkey -in <file> -inform der 
-----BEGIN PUBLIC KEY-----
MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE+4wQWWRnPqGlsncZX17t0CfLOl6u
68aXUsqnzlIcpCdDukHhxibd2MjHPFGpnK3ZKdHxIFh+NBQvGssM5ncm1g==
-----END PUBLIC KEY-----

C#:(keyBytes错了)

代码语言:javascript
复制
SubjectPublicKeyInfo pubinfo = SubjectPublicKeyInfoFactory.CreateSubjectPublicKeyInfo(certificate.GetPublicKey());
byte[] keyBytes = pubinfo.GetEncoded();

byte[] keyHash = DigestUtilities.CalculateDigest("SHA_256", keyBytes);

string keyBytesEncoded = Convert.ToBase64String(keyBytes);
/*keyBytesEncoded == MIIBKjCB4wYHKoZIzj0CATCB1wIBATAsBgcqhkjOPQEBAiEA/////wAAAAEAAA
AAAAAAAAAAAAD///////////////8wWwQg/////wAAAAEAAAAAAAAAAAAAAAD/
//////////////wEIFrGNdiqOpPns+u9VXaYhrxlHQawzFOw9jvOPD4n0mBLAx
UAxJ02CIbnBJNqZnjhE50mt4GffpAEIQNrF9Hy4SxCR/i85uVjpEDydwN9gS3r
M6D0oTlF2JjClgIhAP////8AAAAA//////////+85vqtpxeehPO5ysL8YyVRAg
EBA0IABPuMEFlkZz6hpbJ3GV9e7dAnyzperuvGl1LKp85SHKQnQ7pB4cYm3djI
xzxRqZyt2SnR8SBYfjQULxrLDOZ3JtY=
line break added for readability */

移植GetEncoding的正确方法是什么?

我知道关键数据是错误的,因为当我从openssl手动强制输入数据时,我得到了正确的哈希。

编辑:添加了输出。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-10-19 15:15:51

我想应该是:

代码语言:javascript
复制
byte[] keyBytes = certificate.CertificateStructure.SubjectPublicKeyInfo.GetDerEncoded()
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33158522

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档