在普通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 相关文章推荐
也谈截取首页新闻 - 范例
Oct 09 PHP
PHP 存取 MySQL 数据库的一个例子
Oct 09 PHP
解析php时间戳与日期的转换
Jun 06 PHP
ThinkPHP中redirect用法分析
Dec 05 PHP
php生成二维码
Aug 10 PHP
是 WordPress 让 PHP 更流行了 而不是框架
Feb 03 PHP
php简单实现批量上传图片的方法
May 09 PHP
PHP入门教程之表单与验证实例详解
Sep 11 PHP
PHP实现无限分类的实现方法
Nov 14 PHP
PHP学习笔记之session
May 06 PHP
ThinkPHP中获取指定日期后工作日的具体日期方法
Oct 14 PHP
Laravel 简单实现Ajax滚动加载示例
Oct 22 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
基于PHP异步执行的常用方式详解
2013/06/03 PHP
二进制交叉权限微型php类分享
2014/02/07 PHP
PHP 之 写时复制介绍(Copy On Write)
2014/05/13 PHP
合并ThinkPHP配置文件以消除代码冗余的实现方法
2014/07/22 PHP
百度工程师讲PHP函数的实现原理及性能分析(三)
2015/05/13 PHP
Yii2 RESTful中api的使用及开发实例详解
2016/07/06 PHP
JavaScript 应用类库代码
2008/06/02 Javascript
javascript 模式设计之工厂模式学习心得
2010/04/27 Javascript
JavaScript 实现简单的倒计时弹窗DEMO附图
2014/03/05 Javascript
jquery库文件略庞大用纯js替换jquery的方法
2014/08/12 Javascript
node.js中的fs.statSync方法使用说明
2014/12/16 Javascript
jQuery中offsetParent()方法用法实例
2015/01/19 Javascript
javascript搜索框效果实现方法
2015/05/14 Javascript
JavaScript数值千分位格式化的两种简单实现方法
2016/08/01 Javascript
Java  Spring 事务回滚详解
2016/10/17 Javascript
Bootstrap基本组件学习笔记之下拉菜单(7)
2016/12/07 Javascript
Bootstrap Table使用整理(三)
2017/06/09 Javascript
AngularJS中ng-options实现下拉列表的数据绑定方法
2018/08/13 Javascript
vue.js实现会动的简历(包含底部导航功能,编辑功能)
2019/04/08 Javascript
three.js显示中文字体与tween应用详析
2021/01/04 Javascript
python通过smpt发送邮件的方法
2015/04/30 Python
深入浅析python 中的匿名函数
2018/05/21 Python
Python正则表达式和元字符详解
2018/11/29 Python
Django REST framework视图的用法
2019/01/16 Python
Python定义函数功能与用法实例详解
2019/04/08 Python
pygame实现飞机大战
2020/03/11 Python
python实现opencv+scoket网络实时图传
2020/03/20 Python
keras自定义回调函数查看训练的loss和accuracy方式
2020/05/23 Python
丝芙兰中国官方商城:SEPHORA中国
2018/01/10 全球购物
总经理助理岗位职责
2013/11/08 职场文书
邮政竞聘演讲稿
2014/09/03 职场文书
寻找最美乡村教师观后感
2015/06/18 职场文书
美容院管理规章制度
2015/08/05 职场文书
行为规范主题班会
2015/08/13 职场文书
小区物业管理2015年度工作总结
2015/10/22 职场文书
《雀魂PONG☆》4月1日播出 PV角色设定情报
2022/03/20 日漫