2012-01-02 52 views
6

我想存储在数据库中加密的配置文件细节。但是,一些细节应该是唯一的,并且由于加密算法随机化每次加密的种子,因此无法确定该值是否已存储在数据库中。如何比较随机种子的加密字符串?

  • 我可以循环遍历每一行并解密必要的列,但如果行数很大,这将花费太长时间。
  • 我可以存储这些(未加密的)细节的散列值,但是这将首先终止加密点

那么,如何比较一个加密的字符串(随机种子)与其他人保存在数据库中?

任何帮助,高度赞赏。加密是使用php(MCRYPT_RIJNDAEL_256/NOFB),数据库是MySQL。

编辑/解决方案:除了加密值之外,存储数据散列似乎是我最好的解决方案。这使得验证独特的列对我来说足够简单。感谢大家离开他们的评论/答复。

+0

有趣的问题,虽然我不认为有一个答案超越“将它们未加密地存储在单独的列中”......但我们将看到 – 2012-01-02 09:46:47

+1

我会使用与用户相关的盐的哈希,如他们的用户名这样,如果一个用户的配置文件字段是已知的,则不能推导出在该字段中具有相同的非哈希值的另一个用户,因为它们的散列值将会不同。 – halfer 2012-01-02 09:52:52

+0

@Pekka是的,我们来看看...... – Alasjo 2012-01-02 09:54:13

回答

3

你选择了一种算法,它不提供你现在说你需要的功能。你需要在之前制定你的要求你选择一种算法。

+1

那么,改变算法还不算太晚,有什么建议吗? – Alasjo 2012-01-02 10:06:13

+1

要么为每个密码使用相同的种子,要么使用两个单独的跟踪方案,一个用于捕获重复项(不跟踪哪个用户拥有密码!),另一个用于验证(确实如此)。 – 2012-01-02 10:17:48

+0

这个问题不是关于密码,但我看到需要一个单独的数据集进行比较。谢谢。 – Alasjo 2012-01-02 10:22:22