JSPatch安全部署
前言
这个事JSPatch集成到客户端的第二篇,第一篇链接:http://www.cnblogs.com/hxwj/p/5163158.html
安全部署链接:http://blog.cnbang.net/tech/2879/
我这里就是将原文的方案三RSA效验实现了
首先我们要得到公钥私钥,可以看我之前的一篇文章:http://www.cnblogs.com/hxwj/p/5163635.html
服务器端(由于没有写服务器我用客户端模拟了下)
#pragma mark - 服务器操作
//1.得到私钥
NSString *privkey = @"-----BEGIN PRIVATE KEY-----\nMIICdwIBADANBgkqhkiG9w0BAQEFAASCAmEwggJdAgEAAoGBAMKLDyVSf9GSlMWs\niwLj2L0RNHVFm5zbrnHt6Y5iBIsXgTYuS/FmTSSUgLvgwEMAGHI35MVDYn0WQlfx\neTNCSudO/8aHS135T7QPzi0rzU0nMFrX6k9cTnkmNqvA0vN/VUR9QFRYygYpNVBX\nTmwLQmOxjJebqZsWryP2/vKA78VBAgMBAAECgYAxzfwAqBBFDOu9d6DXCpHQRXlS\nlJF0JOGSFUB3zSwwl8HipxOWJ4SUWthiQPW3sWyQwTJ2Nfwe3fX6Ib3Pm6clAlZI\nBtz1+OltkryrQqEzLP1cw//gSYtcK/QqUZLvBMyrBZTq/9HlmFS7j8J4VyOfwMjO\n7VU9qEnegzLLyRNySQJBAN+cyrxMCCENiTq63v19C25KdpESIH6aPjp+C1cXpCtG\n7snnHMOz93vZpU+YucNkG09cb4BC5dbWhnlKt8hhvUMCQQDeuGxZfiXQdJplmKFo\nvrKZPpsb1mDUbrf8h8vu2sNTBfIPwJjTel9zMHV3fWxQK1KKCJy1BFbewEBHRhTi\nAekrAkADKbWYaj7nMMjTIteKoF0sBzOcI7R/9fCRZT0F01jIH+26v2Ehx4blopN7\nB78A64aTXcxZ9RhJLKmkR5FH7VH/AkEAu5S+hN1PQfODOoBDqbG7QIBPKTH0mdaq\nlUFWTFTp35oJVqUS0kKl86FjvgDf4eGrAeDhA0ClXbS0LpNi8TtEwwJBAMPl5eFW\nB6vqUT57/Fjvdrv8oK5gov/bDmf0ueeoRh4E8AV/Gp5FuhHvoaLLj3uZ35O+0gQJ\nkmuxBVt/k9+EqmQ=\n-----END PRIVATE KEY-----"; //2.加密得到js的md5
NSString *sourcePath = [[NSBundle mainBundle] pathForResource:@"demo" ofType:@"js"];
NSString *script = [NSString stringWithContentsOfFile:sourcePath encoding:NSUTF8StringEncoding error:nil];
//md5字符串
NSString *md5String = [self md5:script];
NSLog(@"%@",md5String); //3.私钥rsa加密生成字符串
NSString *fuwuqiString = @"wIEc7z5OcsKkt1rpgsCXop2RMhSeOA09Hmi8UzRKy7kZp3fWvmxy4DKBl9JVQrEm7iuYB2zNY0IvsSB8PcHvKdzkuNRqhNFkSYBt+3PG63v0NQEaYR6i9HXvF5ZI5h5gLpCZ18bZmhpciaZK+kOZd1BiFdswSrdZp5JaWl19ESM=";
客户端
#pragma mark - 客户端操作,可以等待服务器,等待时间可以10's左右,网络请求后得到数据,然后还可以加一个开关按钮,可决定是否传这个js文件,以免出现BUG
//公钥
NSString *pubkey = @"-----BEGIN PUBLIC KEY-----\nMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDCiw8lUn/RkpTFrIsC49i9ETR1\nRZuc265x7emOYgSLF4E2LkvxZk0klIC74MBDABhyN+TFQ2J9FkJX8XkzQkrnTv/G\nh0td+U+0D84tK81NJzBa1+pPXE55JjarwNLzf1VEfUBUWMoGKTVQV05sC0JjsYyX\nm6mbFq8j9v7ygO/FQQIDAQAB\n-----END PUBLIC KEY-----"; //服务器返回的RSA私钥加密的字符串字符串
NSString *fuwuqiMD5String = fuwuqiString; //服务器返回的JS字符串
NSString *script1 = script; //公钥解密得到解密后的MD5字符串
NSString *decWithPrivKey = [RSA decryptString:fuwuqiMD5String publicKey:pubkey]; [JPEngine startEngine];
if ([[self md5:script1] isEqualToString:decWithPrivKey]) {
NSLog(@"匹配成功");
[JPEngine evaluateScript:script];
}else {
NSLog(@"匹配失败");
}
最新demo链接:http://pan.baidu.com/s/1i4yEejV
JSPatch安全部署的更多相关文章
- JSPatch 部署安全策略
本文转载至 http://blog.cnbang.net/tech/2879/ 使用 JSPatch 有两个安全问题: 传输安全:JS 脚本可以调用任意 OC 方法,权限非常大,若被中间人攻击替换代码 ...
- JSPatch部署JS代码控制OC代码
前言: 这里算是比较实用的一篇了吧,进行了网络安全部署 准备: bmob账号,JSPatch,公钥,私钥,MD5加密,AFNetWorking下载文件 #import <CommonCrypto ...
- 【腾讯Bugly干货分享】JSPatch 成长之路
本文来自于腾讯bugly开发者社区,非经作者同意,请勿转载,原文地址:http://dev.qq.com/topic/579efa7083355a9a57a1ac5b Dev Club 是一个交流移动 ...
- JSPatch来更新已上线的App中出现的BUG(超级详细)
JSPatch的作用是什么呢? 简单来说:(后面有具体的操作步骤以及在操作过程中会出现的错误) 1.iOS应用程序上架到AppStore需要等待苹果公司的审核,一般审核时间需要1到2周.虽然程序在上架 ...
- iOS应用动态部署方案
iOS的动态部署能极大的节约成本.苹果的审核周期很长,有的时候,你可能不得不等待将近2个星期去上架你的新功能或者bug.所以动态部署是有价值的. 我这里讨论的情况不把纯web应用考虑在内,因为用户体验 ...
- JSPatch学习笔记
本文参考JSPatch wiki :https://github.com/bang590/JSPatch/wiki 1.概念 JSPatch是一个轻量的JS引擎,能够使用JavaScript语言来调用 ...
- iOS 通过 JSPatch 实时修复线上 bug!
JSPatch 是一个开源项目(Github链接),只需要在项目里引入极小的引擎文件,就可以使用 JavaScript 调用任何 Objective-C 的原生接口,替换任意 Objective-C ...
- iOS动态部署方案
转载: iOS动态部署方案 前言 这里讨论的动态部署方案,就是指通过不发版的方式,将新的内容.新的业务流程部署进已发布的App.因为苹果的审核周期比较长,而且苹果的限制比较多,业界在这里也没有特别多的 ...
- JSPatch技术文档
一.背景需求介绍 为什么我们需要一个热修复(hot-fix)技术? 工作中容易犯错.bug难以避免. 开发和测试人力有限. 苹果Appstore审核周期太长,一旦出现严重bug难以快速上线新版本. 作 ...
随机推荐
- Android LitePal介绍与使用说明
LitePal for Android LitePal是一个Android开源库,它使开发者使用SQLite数据库变得非常容易. 你可以不用写一句SQL语句就可以完成大部分数据库操作,包括创建表,更新 ...
- Xilinx FPGA结构
FPGA是什么?FPGA是现场可编程逻辑阵列,由可编程逻辑资源(LUT和 REG),可编程连线,可编程I/O构成.Xilinx的FPGA的基本结构是一样的,但随着半导体工艺的发展,FPGA的逻辑容量越 ...
- 浏览器对DIV+CSS兼容性问题大总结
浏览器对DIV+CSS兼容性问题大总结 接触DIV+CSS架构已经快两年了,个人觉得css入门不难,但要学精并非一朝一夕的,现在大部分网络公司都比较主张用div+css来布局,这就面临着一个比较难的问 ...
- 原创 :xftp SFTP子系统申请已拒绝 请确保SSH链接的SFTP子系统设置有效
在出现这个错误时候 如果你的远程连接没有问题 那么就执行下面的命令 service sshd restart 搞定!
- DAG上的动态规划---嵌套矩形(模板题)
一.DAG的介绍 Directed Acyclic Graph,简称DAG,即有向无环图,有向说明有方向,无环表示不能直接或间接的指向自己. 摘录:有向无环图的动态规划是学习动态规划的基础,很多问题都 ...
- Mac上安装Node和NPM【转】
http://www.jianshu.com/p/20ea93641bda 作为前端开发者,node和npm安装必不可少.然而有时会因为安装新的app(如MacPorts,慎装,它会修改基本环境变量以 ...
- synchronized 和ReentrantLock的区别
历史知识:JDK5之前,只有synchronized 可以用,之后就有了ReetrantLock可以用了 ReetrantLock (再入锁) 1.位于java.util.concurrnt.lock ...
- applicationContext.xml重要配置
<!-- 加载 hibernate.properties 文件--> <bean id="propertyConfig" class="org.spri ...
- vuejs 的错误代码,有助于理解
1.vuejs 的双向绑定理解 2.嵌套复杂对象的使用. * 1. 分割都是, 2. json 中分割都是; 4. v-bind:value="param" 括号内的就是 vuej ...
- Nginx代理tcp端口实现负载均衡
Nginx代理tcp端口实现负载均衡 1.修改配置文件 vi /etc/nginx/nginx.conf 添加如下配置: stream { ###XXX upstream notify { has ...