我已经写了一段代码,我无法解释为什么它不应该如此行事。我知道这听起来很愚蠢,但事实并非如此。要'如果'或不''如果'
boolean verify = EDV.verifySignature(signature, cipherText,
SERVER_PUBLIC_KEY);
out.println("Validity " + verify);
if (verify) {
// //message is authentic
String decryptedMessage = EDV.decrypt(cipherText,
SERVER_PRIVATE_KEY);
out.println("Message : " + decryptedMessage);
}else
{
out.println("Signature did not match");
}
这是一个简单的代码,用于验证签名,然后对信息进行解密,如果该签名是有效的(验证是真实的)
此代码的输出是这样的:
Validity false
Signature did not match
的消息解密就好了。
问题是签名应该验证(我检查了签名,cipherText和密钥n次)。这是踢球。
几乎相同的代码
boolean verify = EDV.verifySignature(signature, cipherText,
SERVER_PUBLIC_KEY);
out.println("Validity " + verify);
// if (verify) {
// //message is authentic
String decryptedMessage = EDV.decrypt(cipherText,
SERVER_PRIVATE_KEY);
out.println("Message : " + decryptedMessage);
// }else
// {
// out.println("Signature did not match");
// }
,瞧!输出是因为我想它是和理所应当的。
Validity true
Message : This is a sample Text
而且,第一个代码工作在Eclipse上得很好,但运行它的Java servlet是唯一一次我得到这个。 另外,我第一次运行代码#2它给出了假,但之后它给出了真实。
我似乎无法解释原因。
LINKS
Code#2(运行这段代码,它提供虚假有效性刷新它,它变成真)
它在两个链接上立即给出正确的结果。 –
这两个代码之间的区别究竟是什么?他们看起来一样。 –
@LorenzMeyer矿不。这怎么可能。只有代码#2在多次刷新的情况下也是如此。不同之处在于我评论了if语句。 – crackerjack