【问题标题】:How to compare encrypted strings with random seeds?如何将加密字符串与随机种子进行比较?
【发布时间】:2012-01-31 17:32:29
【问题描述】:

我想在数据库中存储加密的配置文件详细信息。但是,有些细节应该是唯一的,而且由于加密算法会随机化每次加密的种子,因此很难判断该值是否已存储在数据库中。

  • 我可以遍历每一行并解密必要的列,但如果行数很大,这将花费太长时间。
  • 我可以存储这些(未加密)详细信息的哈希值但这会首先破坏加密点

那么,我如何将加密字符串(带有随机种子)与数据库中保存的其他字符串进行比较?

非常感谢任何帮助。用php加密(MCRYPT_RIJNDAEL_256/NOFB),数据库是MySQL。

编辑/解决方案:除了加密值之外,存储散列的数据似乎是我最好的解决方案。这使得验证唯一列对我来说很容易。感谢大家留下他们的 cmets/answers。

【问题讨论】:

  • 有趣的问题,虽然我认为除了“将它们未加密地存储在单独的列中”之外没有其他答案......但我们会看到
  • 我会将哈希与用户相关的盐一起使用,例如他们的用户名。这样,如果一个用户的个人资料字段已知,则无法推断出另一个用户在该字段中具有相同的未哈希值,因为他们的哈希值会不同。
  • @Pekka 是的,让我们看看...
  • @halfer 我需要能够解密这些值并将新帖子与每一行进行比较。
  • 我应该明确表示,除了您的加密列之外,还会存储哈希值,因此您仍然可以解密。要进行比较,您可以获取明文值,然后遍历每一行,并添加您的盐值,对结果进行哈希处理,然后与存储的哈希值进行比较。哈希中的匹配意味着明文也匹配。显然,如果您有很多行,那就不好了 - 但您可以在存储过程中执行此操作以加快循环。

标签: php encryption duplicates


【解决方案1】:

您选择的算法无法提供您现在说需要的功能。 在选择算法之前,您需要确定您的要求。

【讨论】:

  • 嗯,现在改算法还不晚,有什么建议吗?
  • 要么对每个密码使用相同的种子,要么使用两个单独的跟踪方案,一个只是捕获重复项(不跟踪哪个用户拥有密码!),另一个用于身份验证(确实如此)。
  • 问题不在于密码,但我认为需要单独的数据集进行比较。谢谢。
  • @Alajo 哦,我错过了。但是,是的,没关系。
猜你喜欢
  • 2017-11-25
  • 1970-01-01
  • 2017-02-20
  • 1970-01-01
  • 1970-01-01
  • 2020-07-10
  • 1970-01-01
  • 1970-01-01
  • 2022-08-14
相关资源
最近更新 更多