【问题标题】:java - How to parse String to a signature byte[]java - 如何将字符串解析为签名字节[]
【发布时间】:2016-04-20 05:28:24
【问题描述】:

我正在尝试获取代表字符串中签名的字节[],但不断收到“java.security.SignatureException: invalid encoding for signature”

我要做的是发送一个签名字符串并在服务器上验证它,这是我的代码:

这是我签署我的字符串以通过 Web 服务发送它的地方:

Signature signer = Signature.getInstance("DSA");
signer.initSign(signerKey);
signer.update(someString)
byte[] signature = signer.sign();
newToken = someString + Base64.getEncoder().encodeToString(signature); 

这里是获取字符串并用它验证整个事情的服务器端代码:

byte [] sig = Base64.getDecoder().decode(stringSignature);
Signature verifier = Signature.getInstance("DSA");
verifier.initVerify(verifierPubKey);
verifier.update(token);
verified = verifier.verify(signature);

那么,从实际代表我要验证的签名的字符串中获取签名的最佳方法是什么?

谢谢。

【问题讨论】:

    标签: java security base64 primary-key sign


    【解决方案1】:

    我认为是这样的:

    verified = verifier.verify(signature);
    

    应该改成这样:

    verified = verifier.verify(sig);
    

    我猜签名是 Base64 编码之类的,而不是你需要的原始字节。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-06-19
      • 1970-01-01
      • 2023-03-28
      • 2013-06-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多