近期的一个app是本地的,数据源来自于本地的一个.json文件,里面的数据是这个app的灵魂。近期快发布该app了,很担心发布后的.ipa包被竞争者解开然后信息发生泄漏。我的处理策略是:打包的时候放的是一个字符串加密过的json文件,就算别人打开也是乱码。在程序加载时就对该文件进行解码,在沙盒里面生成一个解码后的json文件,在程序退出时删除该临时文件。这样可以保证在不影响现有代码的情况下在一定程度上保护数据。电脑出了点故障,随手用C++在windows下实现了一番,文件先用txt,加密算法先用简单的ascii移位。真正要用的时候同理,加密算法可以用其他优秀的加密算法:

#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包内的文本以及图片资源呢

最新文章

  1. RecyclerView如何消除底部的分割线
  2. 有关JVM配置参数含义
  3. javascript数据结构与算法---栈
  4. iOS:基于CoreText的排版引擎
  5. C# MVC ( 将控制器的实体类注册到视图 )
  6. C#封装C++DLL
  7. json和字符串转换
  8. 如何在UIAlertView中显示进度条
  9. unity3d 制造自己的水体water effect(二)
  10. gvim &amp; vim
  11. GOJ1150(矩阵快速幂)
  12. ASP.NET MVC导出excel
  13. hdu_5832_A water problem(模拟)
  14. Tamper Data 安装与使用
  15. java 得到uuid并处理
  16. spring boot 1.x.x 到 spring boot 2.x.x 的那些变化
  17. 20155215 第二周测试1 与 myod
  18. JavaScript中的 原型 property 构造函数 和实例对象之间的关系
  19. 高效求a的n次幂的算法
  20. python爬虫学习之爬取全国各省市县级城市邮政编码

热门文章

  1. SuperSocket 1.6.4 通过FixedHeaderReceiveFilter解析自定义协议
  2. 扁平化设计的最新趋势 – 长阴影(Long Shadow)
  3. python内置模块(3)
  4. .Net魔法堂:log4net详解
  5. [C#] 可空类型的实现原理
  6. Scrum 3.1 多鱼点餐系统开发进度(第三阶段项目构思与任务规划)
  7. STL or Force --- CSU 1553: Good subsequence
  8. P6 Enterprise Project Portfolio Contract Management
  9. .NET生成缩略图并下载
  10. SQLServer根据不同前缀生成多套流水号