2013-11-27 6 views
1

Этого класса:Почему два текста, которые равны создавать различный зашифрованный текст

import org.jasypt.util.text.BasicTextEncryptor; 

    public class TestSame { 

     public static void main(String args[]){ 

      BasicTextEncryptor textEncryptor = new BasicTextEncryptor(); 
      textEncryptor.setPassword("test"); 

      System.out.println(textEncryptor.encrypt("test")); 
      System.out.println(textEncryptor.encrypt("test")); 

      System.out.println(textEncryptor.decrypt("Nv4nMcuVwsvWVuYD7Av44Q==")); 
      System.out.println(textEncryptor.decrypt("bjU82X18p9gAivwomA+NpQ==")); 

     } 

    } 

Формирует этот вывод:

n3G0M4YH8QjPU+YMYsfTmw== 
ftokGN7dMKyLtKBaim2RTQ== 
test 
test 

Почему зашифрованные тексты отличаются? Расшифрованные тексты одинаковы, так как можно расшифровать пароль, поскольку каждый зашифрованный текст отличается?

Я ожидаю, что тот же текст с использованием одного и того же пароля и того же шифрования будет генерировать один и тот же зашифрованный текст, но это, похоже, не так?

ответ

6

From the documentation:

Если используется генератор случайной соли, два результата шифрования для того же сообщения всегда будет отличаться (за исключением того, в случае случайного совпадения соли). Это может обеспечить безопасность путем сложных атак грубой силы на множество данных за раз и заставить злоумышленников выполнить атаку грубой силы на каждую отдельную часть зашифрованных данных.