MD5加密java/mysql。在Java中,MD5生成31个字节,而不是32个字节
我有一个php脚本,用于在数据库中插入用户名和md5password,其中包含一个用于注册功能的mysql查询,以及一个用于选择用于登录功能的用户名和密码的脚本 对于注册,我从我的android应用程序发送数据,我发送的密码没有加密。Php脚本使用mysql函数md5password进行加密 对于登录,我从应用程序发送加密密码 我的问题是java的MD5和mysql的MD5之间有一个字节的差异 例如,我在数据库中存储了mysql'md5生成的md5密码:MD5加密java/mysql。在Java中,MD5生成31个字节,而不是32个字节,java,php,android,mysql,md5,Java,Php,Android,Mysql,Md5,我有一个php脚本,用于在数据库中插入用户名和md5password,其中包含一个用于注册功能的mysql查询,以及一个用于选择用于登录功能的用户名和密码的脚本 对于注册,我从我的android应用程序发送数据,我发送的密码没有加密。Php脚本使用mysql函数md5password进行加密 对于登录,我从应用程序发送加密密码 我的问题是java的MD5和mysql的MD5之间有一个字节的差异 例如,我在数据库中存储了mysql'md5生成的md5密码: 900150983cd24fb0d69
900150983cd24fb0d6963f7d28e17f72
java使这个md5:
90150983cd24fb0d6963f7d28e17f72
另一个例子:
mysql->0cc175b9c0f1b6a831c399e269772661
java->cc175b9c0f1b6a831c399e269772661
我可以用java实现所有md5加密,也可以用mysql实现所有加密,但我想了解这种差异的原因
这是我的java MD5编目器:
/**
* Utility class for MD5 management.
*
* @author Massimo Carli - Jul 12, 2013
*/
public final class MD5Utility {
/*
* The FF value.
*/
private static final int FF_HEX_VALUE = 0xFF;
// Private constructor
private MD5Utility() {
throw new AssertionError("Never instantiate this!");
}
/**
* Calculate MD5 for String src.
*
* @param src The string to check
* @return MD5 for src or null if some error occured
*/
public static String md5(String src) {
try {
// Create MD5 Hash
MessageDigest digest = MessageDigest.getInstance("MD5");
digest.update(src.getBytes());
byte[] messageDigest = digest.digest();
// Create Hex String
StringBuffer hexString = new StringBuffer();
for (int i = 0; i < messageDigest.length; i++) {
hexString.append(Integer.toHexString(FF_HEX_VALUE & messageDigest[i]));
}
String md5 = hexString.toString();
return md5;
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
}
return null;
}
/**
* Check a String with its MD5.
*
* @param str The string
* @param md5 The MD5 to check
* @return true if ok, false otherwise
*/
public static boolean checkMD5(String str, String md5) {
String pwdMD5 = md5(str);
// We return the test
boolean success = md5.equals(pwdMD5);
return success;
}
}
有人能帮我吗?对不起,我的英语不好用java试试这个方法。此方法提供与mysql md5相同的哈希
public static String getMD5Hash(String s) throws NoSuchAlgorithmException {
String result = s;
if (s != null) {
MessageDigest md = MessageDigest.getInstance("MD5"); // or "SHA-1"
md.update(s.getBytes());
BigInteger hash = new BigInteger(1, md.digest());
result = hash.toString(16);
while (result.length() < 32) { // 40 for SHA-1
result = "0" + result;
}
}
return result; }
为什么不在php中使用md5,而不是在java中使用md5,并将其发送到phpAvoid md5,然后研究类似blowfish@IndraKumarS如果我从手机发送未加密的密码,安全性如何?为什么要添加0?我知道那总是少了一个0。我想知道为什么总是缺少0字符。本网站将帮助了解原因。大概