前言

这个事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. SqlServer表和excel数据批量复制方法

    SqlServer表和excel数据批量复制方法 一.SqlServer表数据复制到excel方法: 1.新建查询,用sql语句把表数据读出来 2.然后,选择数据,右键“复制”(如果需要表字段名称,则 ...

  2. Windows定时任务管理以及服务管理

    1.NSSM.exe https://nssm.cc/ 2.Topshelf 引用地址:https://www.cnblogs.com/guogangj/p/10093102.html#4136330

  3. SublimeREPL配置Python3开发

    首先什么是REPL? A Read-Eval-Print-Loop (REPL) is available both as a standalone program and easily includ ...

  4. 如何在Ubuntu 16.04上安装Apache Web服务器

    转载自:https://www.howtoing.com/how-to-install-the-apache-web-server-on-ubuntu-16-04 介绍 Apache HTTP服务器是 ...

  5. A*和IDA*介绍

    \(A*\)算法是一种很神奇的搜索方法,它属于启发式搜索中的一种.A*最主要的功能当然就是用来剪枝,提高搜索的效率.A*主要的实现方法是通过一个估价函数,每次对下一步进行一个估价,根据估价出的值来决定 ...

  6. iterator方法和for方法 遍历数据库user表结果集ResultSet

    首先,把连接数据库的语句做成工具类,因为会一直用到这几句 代码如下: package com.swift.jdbc; import java.sql.Connection; import java.s ...

  7. python 连接redis cluster

    #!/usr/bin/env python # encoding: utf-8 #@author: 东哥加油! #@file: clear_pool.py #@time: 2018/8/28 17:0 ...

  8. Vue—事件修饰符

    Vue事件修饰符 Vue.js 为 v-on 提供了事件修饰符来处理 DOM 事件细节,如:event.preventDefault() 或 event.stopPropagation(). Vue. ...

  9. 【编码】【转发】enca 转换编码

    enca用法如下: enca -L zh_CN file 检查文件的编码 enca -L zh_CN -x UTF-8 file 将文件编码转换为"UTF-8"编码 enca -L ...

  10. yum安装php7.2

    文章来源:https://www.cnblogs.com/hello-tl/p/9404655.html 分享一个算是比较完美的php7.2yum安装 0.更换yum原 # yum install e ...