我试图获取表示字符串中的签名的字节[],但继续接收" java.security.SignatureException:签名的编码无效"
我想要做的是发送一个已签名的字符串并在服务器上进行验证,这是我的代码:
这是我签署我的字符串以通过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);
那么,从字符串中获取签名的最佳方式是什么?该字符串实际上代表了我试图验证的签名?
感谢。
答案 0 :(得分:0)
我想这个:
verified = verifier.verify(signature);
应改为:
verified = verifier.verify(sig);
我猜测签名是Base64编码或其他东西,而不是你需要的原始字节。