android - 如何保护应用程序内的内容?
问题描述
我想为我的网站创建一个提供在线课程的应用程序,登录后将允许离线访问所有内容(文本和图像)。
我想过简单地将所有数据保存为 HTML 或类似的东西,因为这将是以后显示它的最简单方法,但这将允许任何有一点知识的人在几分钟内提取所有数据,并传播它。
以加密方式或类似方式存储它是否有意义?我该怎么做呢?如果我只是使用加密解密功能,那么任何能够阅读代码的人都可以访问它......
这个问题适用于 iOS 和 Android 开发,但我认为 Android 在这种情况下是一个更大的问题。
解决方案
您可以考虑使用EncryptedSharedPreferences。示例用法是
String masterKeyAlias = MasterKeys.getOrCreate(MasterKeys.AES256_GCM_SPEC);
SharedPreferences sharedPreferences = EncryptedSharedPreferences.create(
"secret_shared_prefs",
masterKeyAlias,
context,
EncryptedSharedPreferences.PrefKeyEncryptionScheme.AES256_SIV,
EncryptedSharedPreferences.PrefValueEncryptionScheme.AES256_GCM
);
// use the shared preferences and editor as you normally would
SharedPreferences.Editor editor = sharedPreferences.edit();
您也许可以通过搜索找到更多示例。
有关 Android 数据安全的更多想法,请查看此处,其中显示了如何读取/写入加密文件。
推荐阅读
- compression - 生物信息学压缩核苷酸序列
- gmail-api - 是否可以以编程方式管理通过 Google Workspace 隔离的 Gmail 邮件?
- ros - roslaunch 存储文件创建/存储错误
- python - 如何从继承的二维列表中获取总值?
- python-3.x - boto3 upload_fileobj 仅将 1000 个对象上传到 S3 位置
- sql - 有没有办法在 SQL Server 中将外键插入表 3 之前将主键插入表 1 和表 2
- java - 如何将java套接字连接到远程服务器套接字
- c++ - 1 + a + a^2 + _ _ _ + a^n 的总和
- java - 将路径更改为'/'后,为什么apache tomcat在启动/重启时调用servlet的doGet方法?
- java - 使用 JPA 的本机 SQL 查询返回整个表而不是过滤