3

我在 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似乎这是我需要的,但我没有设法使它工作。任何帮助,将不胜感激。先感谢您。

4

1 回答 1

0

如果 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”并且应该也可以。

于 2011-05-21T22:49:35.773 回答