能够使用不同的密钥解密消息

时间:2018-04-17 09:35:33

标签: encryption cryptography java-security tripledes

我创建了以下单例类来加密和解密字符串消息。

public static void main( String[] args ) {
  EncryptionHelper encryptionHelper = EncryptionHelper.getInstance( "000000000000ffffffffffff" );
  System.out.println( encryptionHelper.encrypt( "ABCDEFGH" ) );
}

当我尝试使用具有不同密钥的两个不同程序时使用此类的加密和解密方法如下。

public static void main( String[] args ) {
  // Use different key to decrypt
  EncryptionHelper encryptionHelper = EncryptionHelper.getInstance( "111111111111ffffffffffff" );
  // Use output of previous call as input to decrypt
  System.out.println( encryptionHelper.decrypt( "n+0SEJQDXwfvpdMIdetNow==" ) );
}

输出为::: n + 0SEJQDXwfvpdMIdetNow ==

{{1}}

输出是::: ABCDEFGH

正如您所看到的,我在使用加密和解密方法时使用不同的密钥,但程序仍能使用错误的密钥解密确切的值。

你能帮助我知道吗,为什么我这样做,为什么我能用错误的密钥解密?

1 个答案:

答案 0 :(得分:0)

  

为什么我能够使用错误密钥解密?

...因为您没有使用第二个密钥,而是第一次调用getInstance时使用的密钥

如果您没有看到,请在getInstance的第二次通话中回答以下问题,当instance已经有值且不是NULL时, defKey如何影响实例? (提示:它没有)