有人知道如何编码/解码X509AttributeCertificateHolder
?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 - 验证:N/A]
这是用base64结构:
MIIBvzCCASgCAQEwZ6BlMGCkXjBcMQswCQYDVQQGEwJBVTEoMCYGA1UECgwfVGhl
IExlZ2lvbiBvZiB0aGUgQm91bmN5IENhc3RsZTEjMCEGA1UECwwaQm91bmN5IFBy
aW1hcnkgQ2VydGlmaWNhdGUCAQKgYjBgpF4wXDELMAkGA1UEBhMCQVUxKDAmBgNV
BAoMH1RoZSBMZWdpb24gb2YgdGhlIEJvdW5jeSBDYXN0bGUxIzAhBgNVBAsMGkJv
dW5jeSBQcmltYXJ5IENlcnRpZmljYXRlMA0GCSqGSIb3DQEBBQUAAgEBMCIYDzIw
MTcwNjIwMTQ1MDIyWhgPMjAxNzA2MjAxNDUyMDJaMCAwHgYDVQRIMRcwFaEThhFp
ZDovL0RBVTEyMzQ1Njc4OTANBgkqhkiG9w0BAQUFAAOBgQBJ3qTRoIugVaP0KSyd
jcMV3crYjuVGapxe6TTJtDqHc8xXreGhoqvSZv/r6hc6D0Fkjc45fZN4iDml3aLy
E7EsGsRFEm+6cLP4/8s8kgkbPk8ZjslxuQz+IScTXHQABv/5gVzjCC+4cTZ/BccM
KtbQwhNz+aIiJM60uVcW+hfC0w==
您能否在base64中提供属性证书? – 2017-06-20 11:51:19
你可以[编辑]你的问题,并添加base64到它?因为我无法在所提供的信息中重现相同的情况。 – 2017-06-20 16:16:32
我可以将MySQL中的属性证书保存为base64格式。以下是属性证书编码和解码的代码片段。 '''的java myDatabase.inserting(acSerial,pkcSerial,Base64.getUrlEncoder()encodeToString(att.getEncoded())。); //转换为AC对象 byte [] data = Base64.getDecoder()。解码(b_encoded); certificateHolder = new X509AttributeCertificateHolder(data); ''' – Hakikat41