栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

如何安全地在Android中存储加密密钥?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

如何安全地在Android中存储加密密钥?

根据您的评论,您需要使用适用于当前Android版本和旧Android版本的本地密钥对数据进行加密

Android
Keystore
旨在生成和保护您的密钥。但是它不适用于18级以下的API级别,并且在API
23级之前有一些限制。

您将需要一个随机对称加密密钥,例如AES。AES密钥用于加密和解密您的数据。我将总结您的选项,以根据Android API级别安全地生成和存储它。

  • API级别 <18:不存在Android Keystore。向用户请求密码,从该密码派生一个加密密钥,缺点是您需要在应用程序启动时提示输入密码。加密密钥未存储在设备中。每次启动应用程序时使用密码计算一次

  • API级别 > = 18 <23:Android密钥库不提供AES支持。使用默认的密码提供程序(不使用AndroidKeystore)生成随机AES密钥。在Android Keystore中生成一个RSA密钥对,并使用RSA公钥对AES密钥进行加密。将加密的AES密钥存储到Android SharedPreferences中。应用程序启动时,使用RSA私钥解密AES密钥

  • API级别 > = 23:具有AES支持的Android Keystore。使用Android密钥库生成随机AES密钥。您可以直接使用它。

加密可以使用

AES/CBC/PKCS7Padding
算法。它还需要一个随机初始化向量(IV)来加密您的数据,但是它可以是公共的。

备择方案:

  • API级别 > 14:Android密钥链:KeyChain是系统范围的凭证存储。您可以安装带有可以由应用程序使用的私钥的证书。使用预安装的密钥来加密/解密您的AES密钥,如上面第二种情况所示。

  • 外部令牌 :受保护的密钥未存储在设备中。您可以使用包含私钥/公钥对的外部令牌,该令牌允许您加密AES密钥。可以使用蓝牙或NFC访问令牌



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/609510.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号