首页 > 代码库 > 【原】就IOS发布app时如何保护文本资源的一个方法
【原】就IOS发布app时如何保护文本资源的一个方法
近期的一个app是本地的,数据源来自于本地的一个.json文件,里面的数据是这个app的灵魂。近期快发布该app了,很担心发布后的.ipa包被竞争者解开然后信息发生泄漏。我的处理策略是:打包的时候放的是一个字符串加密过的json文件,就算别人打开也是乱码。在程序加载时就对该文件进行解码,在沙盒里面生成一个解码后的json文件,在程序退出时删除该临时文件。这样可以保证在不影响现有代码的情况下在一定程度上保护数据。电脑出了点故障,随手用C++在windows下实现了一番,文件先用txt,加密算法先用简单的ascii移位。真正要用的时候同理,加密算法可以用MD5:
?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 | #include "stdafx.h" #include <iostream> #include <fstream> #include <string> using namespace std; #define KEY 1 int _tmain( int argc, _TCHAR* argv[]) { string oneLineStr; ifstream inf; inf.open( "ReadMe.txt" ); ofstream outf; outf.open( "encode.txt" ); ofstream outf_recovery; outf_recovery.open( "recovery.txt" ); while (getline(inf, oneLineStr)) { cout<< "加密前:" <<oneLineStr<<endl; size_t length = oneLineStr.size(); for (size_t i = 0; i < length; i++) { oneLineStr[i] = ( char )(oneLineStr[i] + KEY); //ascii码改变 } cout<< "该行加密后:" <<oneLineStr<<endl; outf<<oneLineStr<<endl; } outf.close(); inf.clear(); cout<< "开始恢复文件============================" ; ifstream inf_encode; inf_encode.open( "encode.txt" ); while (getline(inf_encode, oneLineStr)) { size_t length = oneLineStr.size(); for (size_t i = 0; i < length; i++) { oneLineStr[i] = ( char )(oneLineStr[i] - KEY); //ascii码改变 } cout<< "解密后:" <<oneLineStr<<endl; outf_recovery<<oneLineStr<<endl; } inf.close(); inf_encode.close(); outf_recovery.close(); int tmp = 0; cin>>tmp; return 0; } |
当然,这种方法有个缺陷,对于非常大的文本文件可能会有点耗时,但是正常情况下几乎感觉不出来。不知道还有没有其他更好的方式保护APP包内的文本以及图片资源呢
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。