0
我使用相同的MySQL表来存储来自不同程序的密码。一个用Java编写,另一个用PHP编写。在Java中使用MD5和Salt进行密码加密
我通过PHP使用这个脚本保存密码:
encrypted_password= md5(md5('added_salt').md5(md5('plain_password')));
我需要使用MD5和盐像上面用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。
你真的[不应使用'md5'(http://stackoverflow.com/questions/401656/ secure-hash-and-salt-for-php-passwords) – kero
还有其他的选择吗?我已经有使用MD5的PHP应用程序。 –
http://stackoverflow.com/questions/4183646/java-md5-the-php-way – cy3er