【原】就IOS发布app时如何保护文本资源的一个方法

为防止App内敏感数据被窃取,采用加密手段保护本地JSON文件。通过简单的ASCII移位算法在打包时加密文件,并在运行时解密使用,确保数据安全。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

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

本文转自编程小翁博客园博客,原文链接:http://www.cnblogs.com/wengzilin/p/3721713.html,如需转载请自行联系原作者

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值