java - 如何将String解析为签名byte []

时间:2016-04-06 21:19:12

标签: java security base64 primary-key sign

我试图获取表示字符串中的签名的字节[],但继续接收" 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);

那么,从字符串中获取签名的最佳方式是什么?该字符串实际上代表了我试图验证的签名?

感谢。

1 个答案:

答案 0 :(得分:0)

我想这个:

verified = verifier.verify(signature);

应改为:

verified = verifier.verify(sig);

我猜测签名是Base64编码或其他东西,而不是你需要的原始字节。