【发布时间】:2012-09-28 12:18:34
【问题描述】:
我的应用需要加密一些数据(用户会话令牌)。我看到的大多数示例都有一个使用密码和盐生成密钥的方法,例如:
public static Key generateKey(char[] passphrase, byte[] salt) {
...
}
我的理解是,我们有三个选项来生成密码:
- 让用户在每次应用启动时都输入它(对用户来说很烦人)。
- 将密码短语硬编码到应用程序本身中。对用户来说更方便,但有人可以找出您的应用二进制文件中的密码。
- 随机生成密码,但我们必须将生成的密钥存储在磁盘上。现在我们刚刚将问题转移到必须将密钥安全地存储在磁盘上,这似乎也是不可能的。如果攻击者找到生成的密钥,问题就大了。
选项 #1 对我不起作用。选项 #2 和 #3 似乎天生就有缺陷,除非我严重误解了如何解决这个问题(希望我是这样)。如果我们不能使用#1,推荐的方法是什么?我们是否设置了一堆模糊的箍让攻击者跳过并寄希望于最好的结果?
谢谢
【问题讨论】:
标签: java android encryption