java如何安全保存密钥_java – 如何在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 Level> = 23:支持AES的Android密钥库.使用Android Keystore生成随机AES密钥.你可以直接使用它.

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

备择方案:

> API级别> 14:Android Key Chain:KeyChain是一个系统范围的凭据存储.您可以使用可供应用程序使用的私钥安装证书.使用预安装的密钥加密/解密您的AES密钥,如上面的第二种情况所示.

>外部令牌:受保护的密钥不存储在设备中.您可以使用包含私钥/公钥对的外部令牌,该令牌允许您加密AES密钥.可以使用蓝牙或NFC接收令牌

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值