在普通HTTP上安全地传输密码


Posted in PHP onJuly 21, 2007

1。理论 
    在普通HTTP上,一般表单中的密码都是以明文方式传到服务器进行处理的。这无疑给了坏人以可乘之机!这里我们就说说怎么传输密码才是安全的! 
    与其传输密码本身,到不如传输其加密后的形式。MD5是个不错的选择。第一,不同的资源几乎不可能生成相同的MD5摘要,第二,MD5的编码方式是不可逆推的。有了这些特性,我们就可以让MD5摘要公开的在Internet上传输,而不必担心密码被坏人知道。然后在服务端也将密码通过同样的方式加密,最后比较这两个字符串。 
    然而,我们不能为了登陆而将密码md5后直接通过Internet传输,因为坏人虽然不会知道我们的密码,但肯定会知道这个特殊的字符串可以授权他们访问我们的网站! 
    这就是公匙和私匙要解决的问题,首先由服务器提供一个随机字符串,然后客户端将这个随机字符串和密码相加后再加密! 
    每次登陆时,服务器会产生不同的随机字符串,这样你的密码没有变,但是通过上面的方法加密后的MD5摘要却完全不同。这样就算坏人得到了这些MD5摘要,他们也不可能分析出你的密码! 
    这种方法中,服务器提供的随机字符串叫做"公匙",寿命很短,并可以被任何人利用;你的密码叫做"私匙",寿命很长,而且永远也不会被人知道。 
    2。实现 
    客户端Javascript并没有提供现成的md5算法,但我们在 google 上用 "md5 javascript" 搜索,就可以得到很多md5在Javascript上实现的例子。 
    在PHP中我就不用多说了,直接用md5()这个函数就可以搞定!随机字符串我们可以用session来存储(PHP就是强啊~~) 
    3。注意 
    在JS中,中文都是UTF-8格式的,所以如果你的密码是中文,而且存储在服务端的密码的编码方式是GB2312,那么两个密码加密后的字符串是完全不同的!

PHP 相关文章推荐
Memcache 在PHP中的使用技巧
Feb 08 PHP
用PHP实现的四则运算表达式计算实现代码
Aug 02 PHP
php通过COM类调用组件的实现代码
Jan 11 PHP
php数组合并的二种方法
Mar 21 PHP
PHP5.5和之前的版本empty函数的不同之处
Jun 13 PHP
PHP strtotime函数用法、实现原理和源码分析
Feb 04 PHP
PHP实现一维数组转二维数组的方法
Feb 25 PHP
PHP实现上传文件并存进数据库的方法
Jul 16 PHP
Thinkphp微信公众号支付接口
Aug 04 PHP
php 中的closure用法详解
Jun 12 PHP
thinkphp分页集成实例
Jul 24 PHP
PHP7如何开启Opcode打造强悍性能详解
May 11 PHP
发布一个迷你php+AJAX聊天程序[聊天室]提供下载
Jul 21 #PHP
PHP+FLASH实现上传文件进度条相关文件 下载
Jul 21 #PHP
一段php加密解密的代码
Jul 16 #PHP
php下一个阿拉伯数字转中文数字的函数
Jul 16 #PHP
php+mysql开源XNA 聚合程序发布 下载
Jul 13 #PHP
PHP如何编写易读的代码
Jul 10 #PHP
php为什么选mysql作为数据库? Mysql 创建用户方法
Jul 02 #PHP
You might like
第七节--类的静态成员
2006/11/16 PHP
PHP 在线翻译函数代码
2009/05/07 PHP
PHP写的加密函数,支持私人密钥(详细介绍)
2013/06/09 PHP
PHP判断是否为空的几个函数对比
2015/04/21 PHP
Yii使用技巧大汇总
2015/12/29 PHP
PHP扩展框架之Yaf框架的安装与使用
2016/05/18 PHP
PHP实现的登录,注册及密码修改功能分析
2016/11/25 PHP
javascript判断用户浏览器插件安装情况的代码
2011/01/01 Javascript
使用Plupload实现直接上传附件至七牛云存储
2014/12/26 Javascript
JavaScript使用RegExp进行正则匹配的方法
2015/07/11 Javascript
简单分析javascript中的函数
2016/09/10 Javascript
基于JS实现横线提示输入验证码随验证码输入消失(js验证码的实现)
2016/10/27 Javascript
vue事件修饰符和按键修饰符用法总结
2017/07/25 Javascript
react native仿微信PopupWindow效果的实例代码
2017/08/07 Javascript
Angular表格神器ui-grid应用详解
2017/09/29 Javascript
nodejs实现超简单生成二维码的方法
2018/03/17 NodeJs
linux 下以二进制的方式安装 nodejs
2020/02/12 NodeJs
javascript用defineProperty实现简单的双向绑定方法
2020/04/03 Javascript
[02:17]DOTA2亚洲邀请赛 RAVE战队出场宣传片
2015/02/07 DOTA
让Python代码更快运行的5种方法
2015/06/21 Python
Python实现进程同步和通信的方法
2018/01/02 Python
Python程序员面试题 你必须提前准备!(答案及解析)
2018/01/23 Python
解决python3爬虫无法显示中文的问题
2018/04/12 Python
应用OpenCV和Python进行SIFT算法的实现详解
2019/08/21 Python
FFT快速傅里叶变换的python实现过程解析
2019/10/21 Python
Tensorflow中的dropout的使用方法
2020/03/13 Python
pytorch读取图像数据转成opencv格式实例
2020/06/02 Python
pandas使用函数批量处理数据(map、apply、applymap)
2020/11/27 Python
把富文本的回车转为br标签
2019/08/09 HTML / CSS
俄罗斯卫浴采暖及维修用品超级市场:Dkrussia
2020/05/12 全球购物
保密协议书范本
2014/04/22 职场文书
10的分与合教学反思
2014/04/30 职场文书
教师批评与自我批评发言稿
2014/10/15 职场文书
2014年学校食堂工作总结
2014/11/25 职场文书
2014年扫黄打非工作总结
2014/12/03 职场文书
小学四年级作文之写景
2019/08/23 职场文书