jasypt: принудительный результат при шифровании - PullRequest
0 голосов
/ 28 мая 2018

Мне просто интересно, можно ли заставить шифровщик всегда возвращать одно и то же зашифрованное значение для одного и того же ввода.

StandardPBEStringEncryptorencryptor = new StandardPBEStringEncryptor();
encryptor.setPassword("My password");
encryptor.setAlgorithm("PBEWithMD5AndTripleDES");

String value1 = encryptor.encrypt("encryptme")
String value2 = encryptor.encrypt("encryptme")
String value3 = encryptor.encrypt("encryptSomethingElse")

assertEquals(value1,value2);
assertNotEquals(value1,value3);

1 Ответ

0 голосов
/ 28 мая 2018

Как указывает документация StandardPBEStringEncryptor,

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

И генератор случайной соли действительно является значением по умолчанию, если вы явно не установите генератор соли.

Для целей модульного теста,Вы можете установить генератор соли, который возвращает одну и ту же соль для одного и того же входа (или всегда возвращает одну и ту же соль), например ZeroSaltGenerator, используя encryptor.setSaltGenerator(mySaltGenerator);

Однако убедитесь, что это не просочится в вашреальный код - делайте это только для тестирования.

...