【发布时间】:2021-07-22 00:14:57
【问题描述】:
实际上,这是我的代码(删除了不相关的内容):
public enum GoogleCertificateProvider {
...
public byte[] signDigest(Digest digest) {
AsymmetricSignResponse result = client.asymmetricSign(keyVersionName, digest);
byte[] signature = result.getSignature().toByteArray();
return Base64.getMimeDecoder().decode(signature);
}
...
}
如上所示,我正在尝试使用 GCP 的 KMS 进行签名(AsymmetricSignResponse:https://googleapis.dev/java/google-cloud-kms/latest/com/google/cloud/kms/v1/AsymmetricSignResponse.html)
结果介于“最后一个单元没有足够的有效位”和预期(正确)结果之一之间:
-----BEGIN CERTIFICATE REQUEST-----
MIIBzzCCAYgCAQAwXTESMBAGA1UEBxMJU2luZ2Fwb3JlMQswCQYDVQQGEwJTRzEJ
MAcGA1UECxMAMR8wHQYDVQQKExZTbGVlayBUZWNoIChQdGUuIEx0ZC4pMQ4wDAYD
VQQDEwVTbGVlazCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALfitXU5
/xmCAkzaX2fSHR69Bqey8ZmvWRB/2G1p9VszHOq2ag6QbsbHTISHSltEQ4ATz10s
NM/8IhfFQcNDwB/4S9h3+TebQGUB2xtqraRxzDs0miEj8uRBk9hdWkpawvBI2eUw
5YhaJYDcx7sPxCg/1lsnv7xXiH80kypUyr3i4umoN5oppGzepzZcrGTSNxlaCTzK
siNqAtEWxvB7dNAoPb1P5niXCZMLVmxgHl1buiLqAUE0dpc7Az5Vucais4qCuH9K
klPclBwv3ElX2bzDpmFTlwe0thKEGp4ChWKqHlz3c4yNHSofit+Y6vW1dJQiZa7v
C4+uX1nZG750s2UCAwEAATANBgkqhkiG9w0BAQsFAAMyAPOLtgaFZ5AKfTMxa10o
drTpqBGOyJvMpsdgwpGyj+PXsHviRayDTb6kK1ulmankEZs=
-----END CERTIFICATE REQUEST-----
为什么 Base64.decode 会这样做?我怎么能弄清楚这一点?我今天已经为此工作了大约 9 个小时,但我仍然没有任何线索。
【问题讨论】:
-
你想完成什么?为什么要对签名进行 base64 解码?
-
我正在尝试从 AsymmetricSignResponse 中获取签名并将其解码为有效的字节数组
-
它是一个字节数组。这就是 toByteArray() 所做的
-
这是一个base64编码的字节数组
-
抱歉,你怎么会这么想?
标签: java google-cloud-platform base64 decode google-cloud-kms