在学习PHP100教程时,看到留言板的登录制作,先把MD5加密过的密码形式存储到数据库中,然后通过登陆框输入未加密的原始密码,PHP从后台帮你把原始密码生成对应的MD5,再去和数据库中的MD5密码进行比对,比对一致则登录成功。
我就在弱弱地想,这样的MD5加密,为了防止 谁呢?
如果MD5加密,是为了让密码变成位数更多更复杂的一个字符串,那盗号者通过前端登录页面尝试试错的 方式猜测密码,也是经过MD5帮忙加密的试错啊,盗号者并不需要直接从头到尾测试16位或32位的密码。
如果是防止侵入数据库的黑客,那黑客一是直接指导了MD5形式的密码,可在前端用不再进行密码MD5加密的形式进行登录,当然,如果黑客侵入了数据库,给你把MD5的密码改成111,不就破解了吗?
我就在弱弱地想,这样的MD5加密,为了防止 谁呢?
如果MD5加密,是为了让密码变成位数更多更复杂的一个字符串,那盗号者通过前端登录页面尝试试错的 方式猜测密码,也是经过MD5帮忙加密的试错啊,盗号者并不需要直接从头到尾测试16位或32位的密码。
如果是防止侵入数据库的黑客,那黑客一是直接指导了MD5形式的密码,可在前端用不再进行密码MD5加密的形式进行登录,当然,如果黑客侵入了数据库,给你把MD5的密码改成111,不就破解了吗?
那么,登录系统制作过程,使用MD5加密到底是为了防止哪种安全隐患呢?
最佳答案
这个加密当然是为了防止信息不被盗取,修改,保护信息啊,黑客入侵的话也是要只要你的加密后的密码才能知道,况且MD5加密后面可以带好多内容,即使你用破解方式来也是不行的,因为你方式不同破解出来的就有区别啊,我用户登录的密码是加密之后通过互联网传输的,然后跟数据库匹配,你数据库密码改成111也是没用的,因为我数据密码传输的时候就已经加密处理了,虽说你密码输入111,但是经过加密后就不是111了,这个跟数据库匹配不同,就永远错的,黑客倒取信息我想不会那么笨,去记原本只有几个字母的密码加密后成了32位的数字,都是盗取原本密码。最后就是跟你说下,这个MD5你现在还没真的了解到它的用处,等你做一个涉及用户注册,登陆,以及账户资金安全的时候你就知道它的重要性了。
最佳答案
代码片段(1)[全屏查看所有代码]
1. [代码][Java]代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
/**
* MD5加码。32位
* @param inStr
* @return
*/
public
static
String MD5(String inStr) {
MessageDigest md5 =
null
;
try
{
md5 = MessageDigest.getInstance(
"MD5"
);
}
catch
(Exception e) {
System.out.println(e.toString());
e.printStackTrace();
return
""
;
}
char
[] charArray = inStr.toCharArray();
byte
[] byteArray =
new
byte
[charArray.length];
for
(
int
i =
0
; i < charArray.length; i++)
byteArray[i] = (
byte
) charArray[i];
byte
[] md5Bytes = md5.digest(byteArray);
StringBuffer hexValue =
new
StringBuffer();
for
(
int
i =
0
; i < md5Bytes.length; i++) {
int
val = ((
int
) md5Bytes[i]) &
0xff
;
if
(val <
16
)
hexValue.append(
"0"
);
hexValue.append(Integer.toHexString(val));
}
return
hexValue.toString();
}
|
最佳答案
这个加密当然是为了防止信息不被盗取,修改,保护信息啊,黑客入侵的话也是要只要你的加密后的密码才能知道,况且MD5加密后面可以带好多内容,即使你用破解方式来也是不行的,因为你方式不同破解出来的就有区别啊,我用户登录的密码是加密之后通过互联网传输的,然后跟数据库匹配,你数据库密码改成111也是没用的,因为我数据密码传输的时候就已经加密处理了,虽说你密码输入111,但是经过加密后就不是111了,这个跟数据库匹配不同,就永远错的,黑客倒取信息我想不会那么笨,去记原本只有几个字母的密码加密后成了32位的数字,都是盗取原本密码。最后就是跟你说下,这个MD5你现在还没真的了解到它的用处,等你做一个涉及用户注册,登陆,以及账户资金安全的时候你就知道它的重要性了。