Я использовал функцию php crypt для хеш-пароля. Например:
<?php $hash = '$2y$08$ffWmSGZOM5pNJpHNvpqMa.z01BL25WGoXViaWYhxS0WRaftgAxhkC'; $test = crypt("test", $hash); $pass = $test == $hash; echo "Test for functionality of compat library: " . ($pass ? "Pass" : "Fail"); echo "\n";
СЕЙЧАС: Если я использую passowrd_hash()
php bcrypt passowrd_hash()
я получаю следующий вывод:
Пароль: test
bcrypted password с помощью passowrd_hash()
: $ 2y $ 08 $ ffWmSGZOM5pNJpHNvpqMa.z01BL25WGoXViaWYhxS0WRaftgAxhkC
Теперь я хочу иметь тот же результат в Android Java. Мои вопросы:
Я также хочу расшифровать пароль с помощью java.
Любой ответ с примером будет оценен. Спасибо всем.
Если вы настаиваете на использовании bcrypt в Java. Попробуйте это, jBCrypt .
Я использую laravel default password hasihing algorthim, используя bcrypt. Моя проблема заключалась в том, чтобы преобразовать его так же, как в Java. Я получил тот же пароль, используя jbcrypt. Например:
Здесь laravel bcrypted password is = "$ 2y $ 08 $ rW76CEOBYmWzeANFqNOQyei8ArmYpacN6MIRjS55sgpT.6p / 5eMv." Я взял эту строку в переменной
String a_hash = "$2y$08$rW76CEOBYmWzeANFqNOQyei8ArmYpacN6MIRjS55sgpT.6p/5eMv.";
И следующий код дает мне соответствующий результат:
if (BCrypt.checkpw(candidate, a_hash)) System.out.println("It matches"); else System.out.println("It does not match");
Для этого я использовал библиотеку BCrypt от Damien Miller. Это полезные URL: http://www.mindrot.org/projects/jBCrypt/
Использование jBCrypt для соляных паролей в приложении для Android вызывает долгое зависание
Использование jBCrypt для соляных паролей в приложении для Android вызывает долгое зависание
Во-первых, нам нужно посмотреть, что делает функция криптографии в PHP. php.net заявляет:
«crypt () вернет хешированную строку, используя стандартный Unix DES-алгоритм или альтернативные алгоритмы, которые могут быть доступны в системе».
Предположим, что это DES, хотя DES не является алгоритмом хэширования.
Итак, теперь мы знаем, что используется «хеш-функция», это просто случай реализации этого другого языка (теперь педантизм, хеш-функции должны всегда возвращать один и тот же вывод с одним и тем же вводом).
Вот ссылка, которая показывает, как реализовать DES в Java: http://www.mkyong.com/java/jce-encryption-data-encryption-standard-des-tutorial/
Кроме того, DES плохо сломан, и его следует избегать. Как минимум, я бы рекомендовал SHA-2 для хеширования. Кроме того, вы не можете (опять же, педантизм в стороне) «дешифровать» хеш, поскольку хэш-функции – это один из способов.