网站注册登陆,密码如何进行加密?
程序员文章站
2022-03-10 22:09:02
...
在网上看了好多这方面的文章,都说客户端的密码,登陆时要用md5加密后发给服务器,然后服务器再和数据库中的salt和加密后的密码进行比较
不太明白如果要是这样做的话
假设A用户的用户名为abcd,密码为123456. md5加密后是:e10adc3949ba59abbe56e057f20f883e
对于黑客而言,他偶然获取了用户名:abcd,密码:e10adc3949ba59abbe56e057f20f883e
此时他不用知道abcd的密码是123456,同时也不需要理解e10adc3949ba59abbe56e057f20f883e 是怎样生成的,他只需要输入用户名:abcd,然后密码:e10adc3949ba59abbe56e057f20f883e 来调用服务就可以登录了。
如何避免这种情况的出现呢?
不太明白如果要是这样做的话
假设A用户的用户名为abcd,密码为123456. md5加密后是:e10adc3949ba59abbe56e057f20f883e
对于黑客而言,他偶然获取了用户名:abcd,密码:e10adc3949ba59abbe56e057f20f883e
此时他不用知道abcd的密码是123456,同时也不需要理解e10adc3949ba59abbe56e057f20f883e 是怎样生成的,他只需要输入用户名:abcd,然后密码:e10adc3949ba59abbe56e057f20f883e 来调用服务就可以登录了。
如何避免这种情况的出现呢?
回复讨论(解决方案)
黑客怎么会知道用户名abcd 和密文?
客户端不需要加密
只需要按正常的用户名和密码登入就可以了。
然后服务器端,对密码执行 md5(md5(密码)+salt) 操作,生成加密后的密码。salt从数据库中获取。
再与数据库中加密的密码比对。
相同则登入成功,否则登入失败。
这种做法的好处是,即使数据库被黑客进入了,也不能知道用户的明文密码。
服务端的密码是这么比较的
if ($row['pwd'] == md5($_POST['pwd'])){
//
}
就算别人知道MD5之后的密码,但是来到服务端,又需要再加密一次的,或者加密多次再比较。
黑客即使黑进你的数据库,获得了你的会员的用户名与加密过的密码,因为md5的加密基本上是不可逆的,所以黑客是无法调用你已知的服务实现登陆操作的。
但是一层md5加密也不是很安全,很多网站都提供md5的解密。建议多次md5加密或者添加你自定义的字符串然后在md5加密(md5(user_passwd.your_defined_string))。
上一篇: PHP是否支持面向对象的编程
下一篇: win7产品激活密钥
推荐阅读
-
php crypt如何实现用户注册密码的加密
-
u盘访问密码如何设置 利用NTFS分区特有权限对u盘进行加密
-
php crypt如何实现用户注册密码的加密
-
javascript - 一些网站在用户提交登录时将密码框中的密码用js进行了一次不可逆加密,然后提交。这样做有必要么?有什么好处和坏处?
-
小技巧:如何突破某些网站只能登陆后才能进行文字拷贝的限制 前端登录cookieJavaScriptHTML5
-
u盘访问密码如何设置 利用NTFS分区特有权限对u盘进行加密
-
如何操作nodejs对密码进行加密
-
javascript - 一些网站在用户提交登录时将密码框中的密码用js进行了一次不可逆加密,然后提交。这样做有必要么?有什么好处和坏处?
-
网站注册登陆,密码如何进行加密?
-
PHP如何更好的对密码进行加密处理