В PHP реализация хэширования Blowfish просто вызывает функцию string crypt(string $str [,string $salt])
и передает соответствующую соль солей, состоящую из «$ 2a $», «$ 2x $» или «$ 2y $ », параметр две цифры затрат, "$", и 22 символов (http://php.net/manual/en/function.crypt.php):Шифрование Blowfish с пользовательской солью в Java
<?php
echo crypt('SAD123', sprintf('$2a$10$%s', '7711cbpe58dfpogiu04985'));
результат:
$2a$10$7711cbpe58dfpogiu0498u5Vh773A3qx.3LE3ro3NX7F9c9N7.pOm
Теперь нужно перенести эту реализацию в Java (или Scala) , и не имеют идей, как получить такой же результат ...
p.s. Я использую Cipher.getInstance("Blowfish")
Спасибо, что работает отлично :-) Я считаю, что должен быть стандартным апи способом Java, хотя))) – Alexander
РНР 'крипты () 'функция реализует bcrypt под капотом (при вызове с выделенной солью), [подробнее] (https://stackoverflow.com/questions/4795385/how-do-you-use-bcrypt-for-hashing-passwords- в-РНР). Bcrypt основан на Blowfish (который является симметричным блочным шифрованием), но использует конкретную фазу расписания ключей, которая делает его односторонним алгоритмом хеширования. Хотя Java обеспечивает реализацию Blowfish, я не думаю, что вы можете построить реализацию bcrypt поверх нее из-за этих различий (сам jBcrypt является чистой реализацией java и не полагается на стандартный api). –