有人知道如何編碼/解碼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