首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Java中X509Certificate到byte[],在C#中返回X509Certificate

在Java中X509Certificate到byte[],在C#中返回X509Certificate
EN

Stack Overflow用户
提问于 2017-08-03 14:26:04
回答 1查看 1.7K关注 0票数 2

我有一个Java,它接收来自其他X509Certificate的service.On Java,使用这个代码片段将X509Certificate序列化为字节数组

代码语言:javascript
复制
 for (X509Certificate certificate : certs) {
                try (ByteArrayOutputStream bos = new ByteArrayOutputStream()) {
                    try (ObjectOutput out = new ObjectOutputStream(bos)) {
                        out.writeObject(certificate);
                        wrapper = new CustomMapCertificateWrapper();
                        wrapper.setCustomValue(bos.toByteArray());
                        response.getCustomMapCertificateWrapper().add(wrapper);
                    }
                }

这里的CustomMapCertificateWrapper是一个具有byte[]值的类,名为字段,它将x509certificate存储为字节数组。我的.NET服务接收到这个对象CustomMapCertificateWrapper,我尝试使用这个代码片段在C#端生成X509Certificate。

代码语言:javascript
复制
//Do array reverse because of BigEndian difference between Java and c# languages 
Array.Reverse(customMapCertificateWrapper.value);

                        var certificate = new X509Certificate(customMapCertificateWrapper.value);

这段代码会使我得到如下的补偿

代码语言:javascript
复制
 System.Security.Cryptography.CryptographicException: Cannot find the requested object.

   at System.Security.Cryptography.CryptographicException.ThrowCryptographicException(Int32 hr)
   at System.Security.Cryptography.X509Certificates.X509Utils._QueryCertBlobType(Byte[] rawData)
   at System.Security.Cryptography.X509Certificates.X509Certificate.LoadCertificateFromBlob(Byte[] rawData, Object password, X509KeyStorageFlags keyStorageFlags)
   at System.Security.Cryptography.X509Certificates.X509Certificate2..ctor(Byte[] rawData)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-08-04 02:34:19

Java的ObjectOutputStream生成可供ObjectInputStream读取的输出。它不会产生一个标准的,语言独立的结果。

为了便于移植,您应该使用X509Certificate方法序列化Certificate.getEncoded()。然后,可以在C#端将输出用作X509Certificate()X509Certificate2()构造函数的byte[]参数。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45487070

复制
相关文章

相似问题

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