2011-05-21 54 views
3

crypt_md5我在PHP中的简单的应用程序,它使用下面的代码来散列密码,并将其存储在数据库中。如何实现PHP是一个Java

<?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 $广告$ BH3wnQs1wym28vdzP8zyh1

我试图做完全与Java相同的代码,但我是新来的Java,我有很多困难。我在这里检查了http://www.java2s.com/Open-Source/Java-Document/Groupware/LibreSource/md5/MD5Crypt.java.htm#cryptStringString,看起来这是我需要的,但我没有设法使它工作。任何帮助,将不胜感激。先谢谢你。

+4

如何*不* MD5Crypt工作? – 2011-05-21 22:12:06

+1

如果你不需要使用什么都应用程式的建筑MD5,SHA1尝试它更安全,然后MD5和即时确认的Java将支持 – 2011-05-21 22:25:03

+0

这是否帮助? http://stackoverflow.com/questions/415953/generate-md5-hash-in-java – jbrookover 2011-05-21 22:27:21

回答

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”,应该工作了。

+1

这似乎是工作,但它实际上是什么样的MD5(“1234”)确实在PHP。我正在寻找一种方法来“代表”crypt($ password,$ salt)在PHP中的作用,尽管我可以使用此代码并更改我在db中存储密码的方式。 – thr33pwood 2011-05-21 23:29:16

+0

@ thr33pwood那么你为什么将这个答案标记为接受 – Jumbogram 2011-05-22 01:07:26