您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

比播种SecureRandom更好的方法来创建AES密钥

比播种SecureRandom更好的方法来创建AES密钥

不,您应该使用a SecureRandom来从静态数据中派生密钥的想法非常糟糕:

使用"SHA1PRNG"的密钥导出函数已经知道生产Android上的几个版本的问题,并且可能无法在任何其他Java RE。

那么,您应该怎么做呢?

如果种子是通过例如密钥协商算法(例如Diffie-Hellman或ECDH)生成的,则首选选项4。

请注意,对于选项3 PBKDF2,明智的做法是仅保留ASCII密码。这是由于Oracle的PBKDF2实现不使用UTF-8编码这一事实。

至于选项4,我已经帮助将所有好的KBKDF添加BouncyCastle库中,因此,如果您可以将BouncyCastle添加到您的类路径和/或已安装的安全提供程序列表中,则无需自己实现KBKDF。目前最好的KBKDF可能是HKDF。如果无法将BouncyCastle添加到类路径中,则可能需要将派生数据上SHA-256输出的最左边字节用作“穷人” KDF。

其他 2022/1/1 18:15:57 有453人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶