Java 如何检查字符串是否为编码形式
我有一个方法,对输入字符串进行编码,然后用我的数据库值(以编码形式存储)检查该值 我需要一种方法,在传递给对字符串进行编码的方法之前检查“strPass”的值 1.管理 2.L4989C 请帮帮我。您必须:Java 如何检查字符串是否为编码形式,java,string,md5,Java,String,Md5,我有一个方法,对输入字符串进行编码,然后用我的数据库值(以编码形式存储)检查该值 我需要一种方法,在传递给对字符串进行编码的方法之前检查“strPass”的值 1.管理 2.L4989C 请帮帮我。您必须: 对要用MD5哈希的字符串进行哈希 以十六进制字符串表示哈希 执行str1.equals(str2)以查看两个哈希值是否相等 这是你问的问题的答案 public void checkString(String strPass) { if (strPass.equals("admin")
这是你问的问题的答案
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(…)
将字符串转换为字节[]
字节[]
新字符串(字节[],…)
将加密的字节转换为字符串字符串
构造函数在输入字节数组中遇到其中一个,则它将放弃该字符串或将其映射到表示不可映射字符的某个字符(例如“?”)。最终结果是校验和没有正确存储。为了解决这个问题,您必须将校验和的字节[]
形式作为blob存储在数据库中,或者将其编码为十六进制或base64或其他格式
如果您提供MD5.crypt方法的源代码,将有助于理解您的问题。。。或者告诉我们它来自哪个库。您的第二个表单以“L”开头。这是一个有效的md5字符吗?嗨,cherouvim,基本上第二种形式是随机生成的字符串,它将在密码重置事件发生时存储在数据库中。为什么不投票,请让我知道它,以便我可以改进帖子的这一部分…这不是你应该遇到的问题。它指出了系统中其他地方的一个主要设计问题。
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.
}