为什么我的Java Base64解码每次运行都会给我不同的结果



实际上,这是我的代码(删除了无关的东西(:

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个小时了,但我仍然一无所知。

我通过与StackOverflower的同事sethvargo交谈解决了这个问题。

他在我们讨论中的第一条评论是Why are you base64-decoding the signature?

我先尝试了几件事,而我本该先尝试的。它最终成为了我的答案:我在base64中没有编码的东西上使用了base64.decode((。

最新更新