gpt4 book ai didi

java - 在调用 doFinal 之前检查 RSA key 是否正确?

转载 作者:行者123 更新时间:2023-12-01 14:38:35 25 4
gpt4 key购买 nike

我正在尝试创建一个程序,使用javax.crypto.Cipher API 检查数字签名。

只要 RSA key 正确配对,我的程序就可以正常工作。但是,当我尝试解密消息时使用不正确的 key 时,会出现异常:

BadPaddingException: Data must start with zero

调用

byte[] signature = cipher.doFinal();

我希望能够在调用 doFinal 之前检查该 key 是否有效,或者如果失败,则正常退出。我已将 doFinal 包装在 try/catch block 中,以尝试关闭我的 UDP 套接字,但这不起作用。

如果有人能指出我正确的方向,我将不胜感激。

最佳答案

您应该使用Signature处理 RSA 签名验证的类。

Signature sig = Signature.getInstance("SHA256withRSA"); // Adjust as necessary
sig.initVerify(publicKey);
sig.update(dataThatWasSigned);

try {
boolean validSignature = sig.verify(signatureYouReceived);
} catch (SignatureException e) {
// Graceful handling belongs here...
}

关于java - 在调用 doFinal 之前检查 RSA key 是否正确?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16226418/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com