在普通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 相关文章推荐
PHP 面向对象实现代码
Nov 11 PHP
PHP获取当前所在目录位置的方法
Nov 26 PHP
在Debian系统下配置LNMP的教程
Jul 09 PHP
php实现的debug log日志操作类实例
Jul 12 PHP
JSON两种结构之对象和数组的理解
Jul 19 PHP
php安装php_rar扩展实现rar文件读取和解压的方法
Nov 17 PHP
php使用PDO从数据库表中读取数据的实现方法(必看)
Jun 02 PHP
PHP实现负载均衡下的session共用功能
Apr 17 PHP
PHP单元测试框架PHPUnit用法详解
Jan 23 PHP
PHP获取远程http或ftp文件的md5值的方法
Apr 15 PHP
PHP封装类似thinkphp连贯操作数据库Db类与简单应用示例
May 08 PHP
Laravel框架数据库迁移操作实例详解
Apr 06 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
调整优化您的LAMP应用程序的5种简单方法
2011/06/26 PHP
关于URL最大长度限制的相关资料查证
2014/12/23 PHP
php实现递归抓取网页类实例
2015/04/03 PHP
php使用CURL模拟GET与POST向微信接口提交及获取数据的方法
2016/09/23 PHP
PHP7安装Redis扩展教程【Linux与Windows平台】
2016/09/30 PHP
PHP 进度条函数的简单实例
2017/09/19 PHP
IE FF OPERA都可用的弹出层实现代码
2009/09/29 Javascript
JQuery Tips(2) 关于$()包装集你不知道的
2009/12/14 Javascript
JavaScript中九种常用排序算法
2014/09/02 Javascript
jQuery表格插件datatables用法总结
2014/09/05 Javascript
一个JavaScript操作元素定位元素的实例
2014/10/29 Javascript
node.js中的path.extname方法使用说明
2014/12/09 Javascript
如何使用PHP+jQuery+MySQL实现异步加载ECharts地图数据(附源码下载)
2016/02/23 Javascript
浅谈JavaScript中的分支结构
2016/07/01 Javascript
JS解决iframe之间通信和自适应高度的问题
2016/08/24 Javascript
javascript代码调试之console.log 用法图文详解
2016/09/30 Javascript
浅谈js的ajax的异步和同步请求的问题
2016/10/07 Javascript
JavaScript设计模式之责任链模式实例分析
2019/01/16 Javascript
详解如何提升JSON.stringify()的性能
2019/06/12 Javascript
node.js中stream流中可读流和可写流的实现与使用方法实例分析
2020/02/13 Javascript
Python中使用语句导入模块或包的机制研究
2015/03/30 Python
Python装饰器用法实例分析
2019/01/14 Python
Python命令行参数解析工具 docopt 安装和应用过程详解
2019/09/26 Python
pymysql模块的操作实例
2019/12/17 Python
python GUI库图形界面开发之PyQt5复选框控件QCheckBox详细使用方法与实例
2020/02/28 Python
解决Keras自带数据集与预训练model下载太慢问题
2020/06/12 Python
Python3.9新特性详解
2020/10/10 Python
Python爬虫模拟登陆哔哩哔哩(bilibili)并突破点选验证码功能
2020/12/21 Python
Canvas 文字碰撞检测并抽稀的方法
2019/05/27 HTML / CSS
欧洲最大的拼图游戏商店:JigsawPuzzle.co.uk
2018/07/04 全球购物
材料加工硕士生求职信
2013/10/10 职场文书
经贸日语毕业生自荐信
2013/11/03 职场文书
《动手做做看》教学反思
2014/04/09 职场文书
公安交警个人对照检查材料思想汇报
2014/10/01 职场文书
2014年心理健康教育工作总结
2014/12/06 职场文书
Spring Data JPA使用JPQL与原生SQL进行查询的操作
2021/06/15 Java/Android