我有一个方法,我编码输入字符串,然后我用我的数据库值检查值(以编码形式存储),
public void checkString(String strPass){
String s = MD5.crypt(strPass);
code to check the string s with the data base value..
}
我需要一种在传递给编码string的方法之前检查'strPass'的值的方法.strPass的数据可能是以 管理员 2. L4989C
请帮帮我..
答案 0 :(得分:1)
你必须:
str1.equals(str2)
查看2个哈希是否相等。答案 1 :(得分:0)
以下是您提出的问题的答案。
public void checkString(String strPass) {
if (strPass.equals("admin") || strPass.equals("L4989C")) {
// do something else
} else {
String s = MD5.crypt(strPass);
// code to check the string s with the data base value.
}
但是,我认为您的MD5.crypt()
方法可能存在问题。如果该方法执行以下操作:
String.getBytes(...)
将字符串转换为byte[]
。byte[]
。new String(byte[], ...)
将加密的字节转换为字符串。问题是最后一步很可能是有损的......而且不正确。大多数字符编码具有不映射到有效字符的字节或字节序列。如果String
构造函数在输入字节数组中遇到其中一个,那么它将丢弃它或将其映射到表示不可映射字符的某个字符(例如“?”)。最终结果是校验和未正确存储。为了解决这个问题,您必须将byte[]
形式的校验和作为blob存储在数据库中,或者以十六进制或base64或其他方式对其进行编码。
如果您提供了MD5.crypt方法的源代码,或者告诉我们它来自哪个库,那将有助于理解您的问题。