热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

淘宝RSA分析与学习

淘宝,购物者的天堂。每天更有数以万计的用户登陆购买商品,其背后的技术支持,能让我们愉快的购物。而前段时间吵得很火的,数据包劫持能够分析到你的各种行为,其中不乏网站账号密码。而为什么他们
淘宝,购物者的天堂。每天更有数以万计的用户登陆购买商品,其背后的技术支持,能让我们愉快的购物。
而前段时间吵得很火的,数据包劫持能够分析到你的各种行为,其中不乏网站账号密码。而为什么他们没有劫持到淘宝的账号密码呢,总是拿别的小软件开涮呢?原因很简单,淘宝的密码在页面传输之前就进行了rsa加密(一种非对称的算法),传输的时候已经变为了已加密的密码了,就算你截取后,没有私有密钥也是解不开的,而且每次rsa加密后都会得到的不同密文,so,这既是为什么没人调戏淘宝的原因。
讲了这么多,先讲讲我是怎么找到加密算法那段代码的吧,适用于新手。

一、寻找rsa加密模块

  1. 用火狐浏览器,然后加firebug插件

    选择firebug

  2. 选择属性改变时暂停

password2下断点
此时的password2也就是加密后密文

  1. 正常登录
    输入账号密码后提交,此时浏览器会暂停起来。
    找到密码更改处
    一直F11,直接看到右边视图,然后点击右边第一行,再到左边点击箭头所选位置(JS格式化)。
    再点F11, 就调到了RSA加密模块了。
    在进入加密模块前,可以看到加密模块的调用信息:
 encrypt: function (a) {// a为你输入的密码
return a && this.pbk //pbk是页面上传入的密钥,图2上面的pbk
&& this.exponent ? (this.rsa || (this.rsa = new e, this.rsa.setPublic(this.pbk, this.exponent)), a = this.rsa.encrypt(a)) : a
}//exponent是10001,如果不清楚都可以采用直接在console里面输入的方式得到。
//全文的意思是,判断a,pbk,exponent 是否为空,若不为空,则首先设置公钥,然后再对a进行加密,最后返回加密后的a

OK,我们分析完他的调用方法后,再看它的加密具体实现
地址在这里https://g.alicdn.com/kg/??rsa/2.0.1/index-min.js?t=1358514278.js

二、分析加密算法

打开我们找到的rsa加密模块地址,每一段开头都有这样一段代码

KISSY.add('kg/rsa/2.0.1/index', [
'./jsbn',
'./rng'
]

其实不然,通过对kissy(淘宝js框架)的简单了解,大概意思应该是在kissy中添加一个模块,这个模块的地址为“kg/rsa/2.0.1/index”,其中会用到另外2个模块 ‘./jsbn’, ‘./rng’。
插一句题外话,kissy框架,提出模块化的概念,所以很多的方法都包装到模块里面了,在你使用的时候,你只需要因为对应的模块即可。有种插件式开发的感觉,对于经常写程序开发的人来讲,比较熟悉也很容易接受。
这一步分析透彻后,我们需要做的是,去kissy模块化,这样才能把这个加密算法搬到你自己的论坛呀、站点呀这些地方。

//我们把类似于这样的结构
KISSY.add('kg/rsa/2.0.1/index', [
'./jsbn',
'./rng'
],function (S, require, exports, module){
//改为
var index=function() {=

全文有4个模块需要改动。
我们再把引入的模块修改一下

//修改1
var d = require('./jsbn'),
f = require('./rng');
//改为
var d = new jsbn();
f = new rng();
//修改2
module.exports = i;
//改为
return i;

修改完后就可以写调用方法了

//str为加密的参数,pbk为公钥,exponent为公钥指数
function encrypt(str){
var temp=new index();
temp.prototype.setPublic(this.pbk,this.exponent);
return temp.prototype.encrypt(str);
}

贴上我修改后的rsa地址,方便各位学习
http://download.csdn.net/detail/u014577133/9575570

写在最后,rsa算法其实网上到处都有一大片,包括java版,.net版等等。我这里只是分享下我的心得体会,顺便熟悉下浏览器的调试模式,下断点的方式。
我的疑问:
淘宝的C端采用rsa对密码进行加密,那么服务器端肯定有私钥来进行解密。这个过程中我的密码是”123”,加密后传输到服务器,解密后密码为”123”,然后和数据库里面我的密码进行比对。那是不是数据库里面我的密码存储的就是明码”123”呢?如果真有一天淘宝数据库泄密,成万上亿的用户密码被泄露,这个损失肯定相当严重!
不过有可能服务器端又进行二次加密,比如md5加密,然后再和数据库中已经进行了md5加密的密码进行比较,这样就算泄露,也不会让普通人随随便便就登录。能起到一定的作用。那服务器如果还要进行md5加密的话,那每天那么多的并发量,服务器还要进行二次加密是不是就增加了服务器的负担,那又为何不直接在客户端进行加密后再传输呢?答案不得而知,我猜测也许是为了兼容部分老系统吧,所以才到服务端进行二次加密。


推荐阅读
  • 校内无法访问IEEE等部分数据库的解决方案
    解决了校内无法访问IE ... [详细]
  • 一句话解决高并发的核心原则
    本文介绍了解决高并发的核心原则,即将用户访问请求尽量往前推,避免访问CDN、静态服务器、动态服务器、数据库和存储,从而实现高性能、高并发、高可扩展的网站架构。同时提到了Google的成功案例,以及适用于千万级别PV站和亿级PV网站的架构层次。 ... [详细]
  • 电信网为不能访问联通服务器的网站_老板说网站慢,我们总结了三大阶段提升性能...
    作者:李平来源:https:www.cnblogs.comleefreemanp3998757.html前言在前一篇随笔《大型网站系统架构的演化》中&# ... [详细]
  • 搭建Windows Server 2012 R2 IIS8.5+PHP(FastCGI)+MySQL环境的详细步骤
    本文详细介绍了搭建Windows Server 2012 R2 IIS8.5+PHP(FastCGI)+MySQL环境的步骤,包括环境说明、相关软件下载的地址以及所需的插件下载地址。 ... [详细]
  • 这是原文链接:sendingformdata许多情况下,我们使用表单发送数据到服务器。服务器处理数据并返回响应给用户。这看起来很简单,但是 ... [详细]
  • [译]技术公司十年经验的职场生涯回顾
    本文是一位在技术公司工作十年的职场人士对自己职业生涯的总结回顾。她的职业规划与众不同,令人深思又有趣。其中涉及到的内容有机器学习、创新创业以及引用了女性主义者在TED演讲中的部分讲义。文章表达了对职业生涯的愿望和希望,认为人类有能力不断改善自己。 ... [详细]
  • t-io 2.0.0发布-法网天眼第一版的回顾和更新说明
    本文回顾了t-io 1.x版本的工程结构和性能数据,并介绍了t-io在码云上的成绩和用户反馈。同时,还提到了@openSeLi同学发布的t-io 30W长连接并发压力测试报告。最后,详细介绍了t-io 2.0.0版本的更新内容,包括更简洁的使用方式和内置的httpsession功能。 ... [详细]
  • 如何在服务器主机上实现文件共享的方法和工具
    本文介绍了在服务器主机上实现文件共享的方法和工具,包括Linux主机和Windows主机的文件传输方式,Web运维和FTP/SFTP客户端运维两种方式,以及使用WinSCP工具将文件上传至Linux云服务器的操作方法。此外,还介绍了在迁移过程中需要安装迁移Agent并输入目的端服务器所在华为云的AK/SK,以及主机迁移服务会收集的源端服务器信息。 ... [详细]
  • 本文介绍了Windows操作系统的版本及其特点,包括Windows 7系统的6个版本:Starter、Home Basic、Home Premium、Professional、Enterprise、Ultimate。Windows操作系统是微软公司研发的一套操作系统,具有人机操作性优异、支持的应用软件较多、对硬件支持良好等优点。Windows 7 Starter是功能最少的版本,缺乏Aero特效功能,没有64位支持,最初设计不能同时运行三个以上应用程序。 ... [详细]
  • 集成电路企业在进行跨隔离网数据交换时面临着安全性问题,传统的数据交换方式存在安全性堪忧、效率低下等问题。本文以《Ftrans跨网文件安全交换系统》为例,介绍了如何通过丰富的审批流程来满足企业的合规要求,保障数据交换的安全性。 ... [详细]
  • 恶意软件分析的最佳编程语言及其应用
    本文介绍了学习恶意软件分析和逆向工程领域时最适合的编程语言,并重点讨论了Python的优点。Python是一种解释型、多用途的语言,具有可读性高、可快速开发、易于学习的特点。作者分享了在本地恶意软件分析中使用Python的经验,包括快速复制恶意软件组件以更好地理解其工作。此外,作者还提到了Python的跨平台优势,使得在不同操作系统上运行代码变得更加方便。 ... [详细]
  • 一面自我介绍对象相等的判断,equals方法实现。可以简单描述挫折,并说明自己如何克服,最终有哪些收获。职业规划表明自己决心,首先自己不准备继续求学了,必须招工作了。希望去哪 ... [详细]
  • 用户视图(查看运行状态或其他参数)系统视图(配置设备的系统参数)system-viewEntersystemview,returnuservi ... [详细]
  • 转自:http:www.phpweblog.netfuyongjiearchive200903116374.html一直对字符的各种编码方式懵懵懂懂,什 ... [详细]
  • 前言折腾了一段时间hadoop的部署管理,写下此系列博客记录一下。为了避免各位做部署这种重复性的劳动,我已经把部署的步骤写成脚本,各位只需要按着本文把脚本执行完,整个环境基本就部署 ... [详细]
author-avatar
风雪漫天2702934714_713
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有