前言

这个事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安全部署的更多相关文章

  1. JSPatch 部署安全策略

    本文转载至 http://blog.cnbang.net/tech/2879/ 使用 JSPatch 有两个安全问题: 传输安全:JS 脚本可以调用任意 OC 方法,权限非常大,若被中间人攻击替换代码 ...

  2. JSPatch部署JS代码控制OC代码

    前言: 这里算是比较实用的一篇了吧,进行了网络安全部署 准备: bmob账号,JSPatch,公钥,私钥,MD5加密,AFNetWorking下载文件 #import <CommonCrypto ...

  3. 【腾讯Bugly干货分享】JSPatch 成长之路

    本文来自于腾讯bugly开发者社区,非经作者同意,请勿转载,原文地址:http://dev.qq.com/topic/579efa7083355a9a57a1ac5b Dev Club 是一个交流移动 ...

  4. JSPatch来更新已上线的App中出现的BUG(超级详细)

    JSPatch的作用是什么呢? 简单来说:(后面有具体的操作步骤以及在操作过程中会出现的错误) 1.iOS应用程序上架到AppStore需要等待苹果公司的审核,一般审核时间需要1到2周.虽然程序在上架 ...

  5. iOS应用动态部署方案

    iOS的动态部署能极大的节约成本.苹果的审核周期很长,有的时候,你可能不得不等待将近2个星期去上架你的新功能或者bug.所以动态部署是有价值的. 我这里讨论的情况不把纯web应用考虑在内,因为用户体验 ...

  6. JSPatch学习笔记

    本文参考JSPatch wiki :https://github.com/bang590/JSPatch/wiki 1.概念 JSPatch是一个轻量的JS引擎,能够使用JavaScript语言来调用 ...

  7. iOS 通过 JSPatch 实时修复线上 bug!

    JSPatch 是一个开源项目(Github链接),只需要在项目里引入极小的引擎文件,就可以使用 JavaScript 调用任何 Objective-C 的原生接口,替换任意 Objective-C ...

  8. iOS动态部署方案

    转载: iOS动态部署方案 前言 这里讨论的动态部署方案,就是指通过不发版的方式,将新的内容.新的业务流程部署进已发布的App.因为苹果的审核周期比较长,而且苹果的限制比较多,业界在这里也没有特别多的 ...

  9. JSPatch技术文档

    一.背景需求介绍 为什么我们需要一个热修复(hot-fix)技术? 工作中容易犯错.bug难以避免. 开发和测试人力有限. 苹果Appstore审核周期太长,一旦出现严重bug难以快速上线新版本. 作 ...

随机推荐

  1. WEB 前端菜鸟,感觉很迷茫,该怎么做?

    前几天看到这样的问题 先说问题吧:感觉前端涉及到的东西太多了,自己也很浮躁,看了挺多书,可是代码缺敲得却不多.技术菜,又什么都想学,比如现在纠结要不要先学scss或者php或者angularjs,ba ...

  2. log日志应用 自定义的log

    package com.kxd.utils; import java.util.Hashtable; import android.util.Log; /** * The class for prin ...

  3. Android学习总结(十八) ———— SQLite数据库使用

    一.基本概念 数据库最经典的四个操作 添加.删除.修改.查找,在处理大量数据的时候使用数据库可以帮我们迅速定位当前须要处理的数据,举个例子 好比现在要实现一个搜索功能 用数据库的话只须要其中一个搜索条 ...

  4. strophe.js 插件 XMPP openfire

    参考资料:http://strophe.im/strophejs/ https://github.com/strophe/strophejs-plugins http://amazeui.org/ 最 ...

  5. 洛谷P1628 合并序列

    题目描述 有N个单词和字符串T,按字典序输出以字符串T为前缀的所有单词. 输入输出格式 输入格式: 输入文件第一行包含一个正整数N: 接下来N行,每行一个单词,长度不超过100: 最后一行包含字符串T ...

  6. 用cssText批量修改样式

    一般情况下我们用js设置元素对象的样式会使用这样的形式: var element= document.getElementById(“id”);element.style.width=”20px”;e ...

  7. 爬虫_python3_urllib

    urlib库为python3的HTTP内置请求库 urilib的四个模块: urllib.request:用于获取网页的响应内容 urllib.error:异常处理模块,用于处理异常的模块 urlli ...

  8. 【Codeforces Rockethon 2014】Solutions

    转载请注明出处:http://www.cnblogs.com/Delostik/p/3553114.html 目前已有[A B C D E] 例行吐槽:趴桌子上睡着了 [A. Genetic Engi ...

  9. 官方webupload上传多个文件或者图片的方法

    文件上传 页面代码: <!--引入CSS--> <link rel="stylesheet" type="text/css" href=&qu ...

  10. 【数学 exgcd】bzoj1407: [Noi2002]Savage

    exgcd解不定方程时候$abs()$不能乱加 Description Input 第1行为一个整数N(1<=N<=15),即野人的数目. 第2行到第N+1每行为三个整数Ci, Pi, L ...