如何在 android 应用程序中显示 x 509 证书
How to display x509certifcate in android app
我用海绵堡。我从 android 应用程序中的 Web 服务下载了字节数组证书(我认为是 base64 字节数组)并想在屏幕上显示它。我写了下面的代码但它不起作用并且 c 变量为空。
另外不知道怎么在屏幕上显示。
SoapObject result = (SoapObject)envelope.bodyIn;
if(result != null)
{
Object cert= result.getProperty(0);
InputStream is = new ByteArrayInputStream(cert.toString().getBytes());
CertificateFactory cf = CertificateFactory.getInstance("X.509","BC");
java.security.cert.Certificate c = cf.generateCertificate(is);
X509Certificate t = (X509Certificate) c;
System.out.println("ca=" + t.getSubjectDN());
}
可能 cert.toString().getBytes()
是问题所在。证书以二进制格式编码。要构建它,您需要一个字节数组,而不是转换为字节的字符串。
确保您收到的证书是哪种格式,以便将其转换为二进制文件。如果你认为证书是base64编码的,就这样解码
byte[] data = Base64.decode(base64, Base64.DEFAULT);
另请注意 SpongyCastle 的 Java 安全性 API 提供商名称是 SC
而不是 BC
要显示文本,您需要在 Activity 或 Fragment 中设置 TextView 的内容。我建议你先得到一个教程
我用海绵堡。我从 android 应用程序中的 Web 服务下载了字节数组证书(我认为是 base64 字节数组)并想在屏幕上显示它。我写了下面的代码但它不起作用并且 c 变量为空。 另外不知道怎么在屏幕上显示。
SoapObject result = (SoapObject)envelope.bodyIn;
if(result != null)
{
Object cert= result.getProperty(0);
InputStream is = new ByteArrayInputStream(cert.toString().getBytes());
CertificateFactory cf = CertificateFactory.getInstance("X.509","BC");
java.security.cert.Certificate c = cf.generateCertificate(is);
X509Certificate t = (X509Certificate) c;
System.out.println("ca=" + t.getSubjectDN());
}
可能 cert.toString().getBytes()
是问题所在。证书以二进制格式编码。要构建它,您需要一个字节数组,而不是转换为字节的字符串。
确保您收到的证书是哪种格式,以便将其转换为二进制文件。如果你认为证书是base64编码的,就这样解码
byte[] data = Base64.decode(base64, Base64.DEFAULT);
另请注意 SpongyCastle 的 Java 安全性 API 提供商名称是 SC
而不是 BC
要显示文本,您需要在 Activity 或 Fragment 中设置 TextView 的内容。我建议你先得到一个教程