2011-05-21 63 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