【发布时间】:2017-06-20 08:56:52
【问题描述】:
有人知道如何对X509AttributeCertificateHolder 进行编码/解码吗?
我尝试了以下代码(att 是创建的X509AttributeCertificateHolder):
byte[] arr = att.getEncoded();
X509AttributeCertificateHolder holder = new X509AttributeCertificateHolder(arr);
问题是:holder 和 att 的属性不一样。
我使用了以下简单的测试:
for (int i = 0; i < holder.getAttributes().length; i++) {
Attribute attr1 = holder.getAttributes()[i];
Attribute attr2 = att.getAttributes()[i];
System.out.println("Holder value after decode: " + attr1.getAttrValues());
System.out.println("Holder value before encode: " + attr2.getAttrValues());
}
而测试的结果是:
解码后的持有者值: [[[1][6]#69643a2f2f444155313233343536373839]]
编码前的持有人值:[名称:id://DAU123456789 - Auth:N/A]
这就是base64中的结构:
MIIBvzCCASgCAQEwZ6BlMGCkXjBcMQswCQYDVQQGEwJBVTEoMCYGA1UECgwfVGhl
IExlZ2lvbiBvZiB0aGUgQm91bmN5IENhc3RsZTEjMCEGA1UECwwaQm91bmN5IFBy
aW1hcnkgQ2VydGlmaWNhdGUCAQKgYjBgpF4wXDELMAkGA1UEBhMCQVUxKDAmBgNV
BAoMH1RoZSBMZWdpb24gb2YgdGhlIEJvdW5jeSBDYXN0bGUxIzAhBgNVBAsMGkJv
dW5jeSBQcmltYXJ5IENlcnRpZmljYXRlMA0GCSqGSIb3DQEBBQUAAgEBMCIYDzIw
MTcwNjIwMTQ1MDIyWhgPMjAxNzA2MjAxNDUyMDJaMCAwHgYDVQRIMRcwFaEThhFp
ZDovL0RBVTEyMzQ1Njc4OTANBgkqhkiG9w0BAQUFAAOBgQBJ3qTRoIugVaP0KSyd
jcMV3crYjuVGapxe6TTJtDqHc8xXreGhoqvSZv/r6hc6D0Fkjc45fZN4iDml3aLy
E7EsGsRFEm+6cLP4/8s8kgkbPk8ZjslxuQz+IScTXHQABv/5gVzjCC+4cTZ/BccM
KtbQwhNz+aIiJM60uVcW+hfC0w==
【问题讨论】:
-
能否提供base64的属性证书?
-
你能edit你的问题并添加base64吗?因为我无法使用提供的信息在这里重现相同的情况。
-
我可以将MySQL中的属性证书保存为base64格式。这是属性证书的编码和解码的代码sn-p。
java myDatabase.inserting(acSerial,pkcSerial,Base64.getUrlEncoder().encodeToString(att.getEncoded())); // Convert to AC object byte[] data = Base64.getDecoder().decode(b_encoded); certificateHolder = new X509AttributeCertificateHolder(data); -
请edit您的问题并将代码(和所有相关信息)添加到其中。这比在 cmets 中发布要好得多。
标签: java decode encode bouncycastle attributecertificate