Fed*_*oca 14 encryption android
我正在创建一个用于存储加密数据的应用程序.
在这个问题中,OP si建议明确存储用户的凭证.
但是,如果我想存储使用SecretKeySpec(用于加密数据的密码)创建的加密密码,该怎么办?根据我的理解,密钥本身是加密的.
所以我可以存储和检索它.
注意:我不是在询问如何存储首选项,只要我了解SecretKeySpec如何工作以及如何排序,序列化和检索加密密码.
编辑:对不起,我忘了指定它需要与API级别4兼容.
Bri*_*fey 11
直接来自开发者网站.
要聪明一点安全!
了解AccountManager不是加密服务或钥匙串非常重要.它以正文传递的方式存储帐户凭据.在大多数设备上,这不是特别关注的问题,因为它将它们存储在只能由root访问的数据库中.但是在root设备上,任何拥有adb访问权限的人都可以读取凭据.
考虑到这一点,您不应将用户的实际密码传递给AccountManager.addAccountExplicitly().相反,您应该存储对攻击者有限使用的加密安全令牌.如果您的用户凭据保护有价值的东西,您应该仔细考虑做类似的事情.
请记住:在安全代码方面,请遵循"流言终结者"规则:不要在家里试试!在实施任何自定义帐户代码之前咨询安全专家.
现在安全免责声明已经不在了,现在是时候重新开始工作了.您已经实现了自定义帐户代码的内容; 剩下的就是管道.
哇.我真的不认为将用户的密码存储在明文中是一个严肃的选择.
查看为此目的而设计的AccountManager.虽然它在您链接的问题中得到了关注,但SampleSyncAdapter确实是一个很好的资源AccountManager,并且是SDK中唯一包含的知识.
编辑 - 关于javax.crypto,我认为它是一个较低级别的API AccountManager.来自文档:
许多服务器支持一些身份验证令牌的概念,可用于验证对服务器的请求,而无需发送用户的实际密码.(Auth令牌通常使用单独的请求创建,其中包含用户的凭据.)AccountManager可以为应用程序生成auth令牌,因此应用程序不需要直接处理密码.身份验证令牌通常可由AccountManager重用和缓存,但必须定期刷新.应用程序负责在auth令牌停止工作时使其失效,因此AccountManager知道它需要重新生成它们.
如果我没有必要,我讨厌在javax.crypto的层面处理这个问题.
| 归档时间: |
|
| 查看次数: |
10341 次 |
| 最近记录: |