gpt4 book ai didi

Java加密: What seed to use in my AES/CBC/PKCS5Padding scenario

转载 作者:行者123 更新时间:2023-11-30 06:41:53 24 4
gpt4 key购买 nike

我正在构建一个应用程序,它将使用 AES/CBC/PKCS5Padding 方法来加密用户设备上的数据,安全性非常重要。我想防止暴力攻击,以防有人获得数据库。

表中的每一行都有一个关联的标题。我不知道用什么作为种子。我可以执行以下操作之一:

  1. 在源代码中硬编码我自己的种子,但我相信如果有人反编译我的应用程序,就可以读取它

  2. 使用用户输入的标题作为种子

  3. 使用我自己的种子和输入的标题的串联

除非有其他方法,否则在上述所有场景中,我都可以想象有人找出种子。这对他们暴力破解加密数据有用吗?当然,在上述所有场景中,我还将用户的密码作为 key 的一部分包含在内。

如何让潜在的黑客更难入侵?

编辑(重新编辑)

基于以下回复以及我的研究和思考过程。我想我可以做到以下几点。

  1. 让用户输入密码,但不将其存储在数据库中
  2. 在存储敏感数据之前,他们必须输入标签来识别它。我会将其以明文形式存储在数据库中,并将其用作盐
  3. 我将使用用户的密码和带有 PBKDF2 的标签来生成 key ,但不会存储它
  4. 我将使用 #3 生成的 key 来加密敏感数据
  5. 为了解密,我将再次根据用户的密码和行标签生成 key ,并使用它来解密敏感数据

这听起来正确吗?如果黑客掌握了包含两列(标签明文和加密数据)的数据库,他们能够推断出任何东西吗?

编辑2

我计划构建一个具体的 Android 应用程序,以下链接非常适合我的需要。

https://nelenkov.blogspot.in/2012/04/using-password-based-encryption-on.html?m=1

https://android-developers.googleblog.com/2013/02/using-cryptography-to-store-credentials.html?m=1

最佳答案

这里的问题是,每当有人反编译您的应用程序时,生成 key 的方法都是众所周知的。因此,如果该 key 生成的所有输入数据都已知,则生成 key 就很简单。

因此,您可能希望为用户提供输入将用于 AES 加密的密码的可能性。确保您使用诸如PBKDF2之类的系统以便很难暴力破解密码。

如果您的数据库没有存储在用户的设备上,而是存储在外部,那么您可能会生成并存储 secure random key在设备上,并在数据实际存储到中央数据库之前对其进行加密。

关于Java加密: What seed to use in my AES/CBC/PKCS5Padding scenario,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44256436/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com