'如果'或不''如果'

时间:2015-06-20 20:53:32

标签: java servlets if-statement

我编写了一段代码,但我无法解释为什么它的表现不应该如此。我知道这听起来很傻,但事实并非如此。

            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");
//              }

和Voila !,输出就像我希望的那样,应该如此。

Validity true
Message : This is a sample Text

而且,第一个代码在Eclipse上运行得很好,但是在JAVA servlet上运行它是唯一一次得到它。 此外,第一次运行代码#2时,它会给出错误但在此之后它会给出真的。

我似乎无法解释原因。

链接

Code#1

Code#2(运行此代码,它给出了错误的有效性,刷新它并且它变为真)

1 个答案:

答案 0 :(得分:1)

在您提供的示例之前,代码中的某些内容未正确初始化。尝试为签名,cipherText和SERVER_PUBLIC_KEY参数添加一些测试println语句。

另外,检查EDV.verifySignature的初始化。

相关问题