簡體   English   中英

使用MD5和Salt在Java中進行密碼加密

[英]Password encryption in Java using MD5 and Salt

我正在使用相同的MySQL表來存儲來自不同程序的密碼。 一種用Java編寫,另一種用PHP編寫。

我使用以下腳本通過PHP保存密碼:

encrypted_password= md5(md5('added_salt').md5(md5('plain_password')));

我需要使用MD5和上述的salt加密Java中的密碼。 我用Java編寫代碼,但輸出卻不同:

       MessageDigest md = MessageDigest.getInstance("MD5");


       String salts = "a,d,d,e,d,_,s,a,l,t";

        String salttmps[] = salts.split(",");
        byte salt[] = new byte[salttmps.length];

        for (int i = 0; i < salt.length; i++) {
          salt[i] = Byte.parseByte(salttmps[i]);
        }
        md.update(salt); 
        md.update(password.getBytes());

        byte byteData[] = md.digest();


        StringBuffer sb = new StringBuffer();
        for (int i = 0; i < byteData.length; i++) {
         sb.append(Integer.toString((byteData[i] & 0xff) + 0x100, 16).substring(1));
        } 
        password = sb.toString();

我需要更正Java代碼並生成與PHP相同的輸出。

如果您可以在問題中張貼輸出示例,則最好重現該算法。

我想你應該做這樣的事情:

public static void main(String[] args) {

    try {
        System.out.println(md5(md5("added_salt"), md5("plain_password")));
    } catch (NoSuchAlgorithmException e) {
        e.printStackTrace();
    }
}

public static String md5(String plainText) throws NoSuchAlgorithmException {
    return md5(null, plainText);
}

public static String md5(String salt, String plainText)
        throws NoSuchAlgorithmException {
    MessageDigest md = MessageDigest.getInstance("MD5");

    if (salt != null) {
        md.update(salt.getBytes());
    }
    md.update(plainText.getBytes());

    byte byteData[] = md.digest();

    StringBuffer sb = new StringBuffer();
    for (int i = 0; i < byteData.length; i++) {
        sb.append(Integer.toString((byteData[i] & 0xff) + 0x100, 16)
                .substring(1));
    }
    return sb.toString();
}

md5(md5("added_salt"), md5("plain_password"))返回3bd9e544ab1a3d3485f07af38cc1b415

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM