Как реализовать php's crypt_md5 в Java - PullRequest
3 голосов
/ 22 мая 2011

У меня есть простое приложение на PHP, которое использует следующий код для хеширования пароля и сохранения его в БД.

<?php
$user_name = "admin";
$password = "1234";
$salt = substr($user_name, 0, 2);
$salt = '$1$' . $salt . '$'; //$salt = $1$ad$
$crypt_password = crypt($password, $salt);
echo $crypt_password;
?>

этот код создает следующий пароль для хранения в БД: $ 1 $ ad $ BH3wnQs1wym28vdzP8zyh1

Я пытаюсь сделать точно такой же код с Java, но, поскольку я новичок в Java, у меня много трудностей. Я проверил здесь http://www.java2s.com/Open-Source/Java-Document/Groupware/LibreSource/md5/MD5Crypt.java.htm#cryptStringString и кажется, что это то, что мне нужно, но мне не удалось заставить его работать. Любая помощь будет оценена. Заранее спасибо.

1 Ответ

0 голосов
/ 22 мая 2011

Если у вас работает md5, вы можете попробовать следующий код:

    String pass = "1234";
    MessageDigest crypt = null;

    try {
        crypt = java.security.MessageDigest.getInstance("MD5");
    } catch (NoSuchAlgorithmException e) {
        System.out.println("MD5 not supported");
        return; // depends on your method
    }

    byte[] digested = crypt.digest(pass.getBytes());
    String crypt_password = new String();

    // Converts bytes to string
    for (byte b : digested) 
        crypt_password += Integer.toHexString(0xFF & b);

    System.out.println(crypt_password);

Кроме того, вы можете изменить «MD5» на «SHA1», и он тоже должен работать.

...