使用php和mysql加密和解密数据的最佳方法

时间:2014-10-28 22:46:25

标签: algorithm encryption

首先,我试图在公共网站上加密非常敏感的信息。用户将能够更新他们的信息,管理员将需要访问此信息。我担心如果加密数据有些受到损害,那么每个人的信息都会因为他们都使用相同的盐和密钥而存在。

所以我知道使用盐,并且密钥总是首选。但如上所述,如果他们对加密数据进行反向工程,那么它的用途是什么。

我的解决方案是将密钥和盐存储在DB中,具有许多行和列,其中任何一个都可以用于盐或密钥。我会有一个算法,将使用用户帐户中修复的“东西”,用于确定使用哪个盐和密钥。这种方式从统计上讲,没有2年将有相同的盐和关键组合。

这是过度杀人还是好?

1 个答案:

答案 0 :(得分:1)

我质疑第二个包含密钥和盐的数据库的值。考虑:

  • 用户数据中标识盐和密钥的“某物”必须以与用户数据的其余部分不同的方式加密。否则,如果没有先拥有它,你将无法获得它。
  • 加密用户数据的统计分析几乎肯定会发现“某些东西”的加密方式不同。这就像在公牛上挥舞着一面红旗,攻击者将集中精力搞清楚为什么会有不同。
  • 您可以假设,如果攻击者可以获取加密用户信息的数据库,他还可以获取盐和密钥数据库。

鉴于此,有两种可能的情况:

  1. 标识密钥和盐的“东西”的加密是牢不可破的。也就是说,攻击者的最佳努力无法揭示“某事”与密钥/盐数据库之间的联系,这是非常好的。
  2. 攻击者发现“某事”的加密,因此可以解密您的敏感数据。
  3. 如果是#1,那么您可能应该将该加密算法用于所有的用户数据。当你能在一个步骤中有效地完成它时,为什么分两步呢?

    如果情况是#2,那么你所做的所有工作只会给攻击者带来一点冲击。

    所以,简短的回答:你的建议看起来像是不必要的工作或无效的道路阻塞。在任何一种情况下,它看起来像是一大堆工作,增加了复杂性,没有明显的收获。

    那就是说,我可能误解了你的简短说明。如果是这样,请纠正我。