近期的一個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包內的文本以及圖片資源呢
