1
5
以外
你可以试一下,但我怀疑大多数人会像你已经拒绝的解决方案。大多数安全数据存储都涉及密码,并假定密码保存在其他地方(例如,在用户的头上)。例如, OI Safe 有一个基于意图的系统,允许应用程序将东西存储在保险箱中,但是用户参与了保险箱的解锁,IIRC。 |
2
4
如果最终使用了keystore api,一个解决方案是在应用程序每次需要访问keystore时动态地在运行时生成密码。如果您将密码算法建立在一个简单但可更改的变量上,该变量与特定的安装绑定在一起,例如设备meid(或在运行时获得的物理设备的其他特定ID),那么您可以为锁提供一个越来越难选择的密钥。 示例:使用来自物理设备的ID,在三个位置剪切并将其附加到ID字符串中的结束位置,然后以编程方式将您的首字母附加到字符串。我认为这种方法将提供一个不易被破坏的安全层,除非破解者知道您是如何生成密钥的(即拥有源代码)。
其中meid是一个带有设备ID的字符串,“fluffy”是你最好的朋友猫的名字,“2008”是你生命中重要事件的一年。然后将这个新字符串输入一个数组,通过一个适合您的数字进行解析(例如,您获得驾驶执照的那个月的某一天),取出三个字符,并将这些字符放到字符串的末尾。从绳子的前面剪到钥匙所需的位置,然后离开。这不应该是一个处理器密集型的任务,因此,使用一些变量的容错代码,您应该能够在主进程中运行此任务,即使从系统中获取ANR的担心太多。如果您真的想得到frogy,可以在某个点将字符串转换为位,然后“按位操作”更改。Viola,一个低开销的动态键,对于运行它的设备来说是独一无二的! 编辑: 正如@redwarp指出的那样,使用适当的工具和动机,对任何对象代码进行.apk的反编译总是在可能的范围内。如果“密钥”生成是一个非常重要的过程,那么必须在应用程序范围之外抽象出密钥生成。 我试图用这个答案来说明的一点是,有一点先入为主的想法可以使安全性降到最低。更强的安全性比我简单的回答更深入。 |
3
0
您必须在这里区分密钥和应用程序数据。 “androidkeystore”keypairGenerator和keyGenerator将从应用程序生成的密钥存储在keystore中的别名下,并将这些密钥与应用程序关联。如果设备具有“安全硬件”,您可以指定使用它,并且密钥将存储在那里。 没有密钥的密码。使用别名指定要使用的键。只有你的应用程序才能检索到它生成的密钥。 见: https://developer.android.com/training/articles/keystore.html 对于你的应用程序的私有数据,如果我理解“…用于存储的Android API,确保只有存储了一些信息的应用程序才能将其检索回来。..“,你可以看看这些: https://developer.android.com/guide/topics/data/data-storage.html#filesInternal https://developer.android.com/guide/topics/data/data-storage.html#db |
Abhilash Das · 输入文本时,编辑文本与工具栏重叠 1 年前 |
Community wiki · 局部变量可能尚未初始化 1 年前 |
jvargas · 如何获取上个月的第一天和最后一天以及一年的第一天 1 年前 |