【问题标题】:Why does my Java Base64 decode give me different results each run?为什么我的 Java Base64 解码每次运行都会给我不同的结果?
【发布时间】: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


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 2018-05-02
    • 2015-06-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-02-10
    • 1970-01-01
    相关资源
    最近更新 更多