前言 這個事JSPath集成到客戶端的第二篇,第一篇鏈接:http://www.cnblogs.com/hxwj/p/5163158.html 安全部署鏈接:http://blog.cnbang.net/tech/2879/ 我這裡就是將原文的方案三RSA效驗實現了 首先我們要得到公鑰私鑰,可以看我
前言
這個事JSPath集成到客戶端的第二篇,第一篇鏈接: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