PHP MySQL用户密码加密

Pra*_*sha -1 php mysql password-encryption

我使用以下方式加密用户的密码,即AES加密.我只是想知道这是一个好习惯,还是我应该遵循任何其他方法.因为有人让我感到困惑,说"为什么不使用"SALT".我可以使用SALT AES加密吗?Bellow是我正在使用的示例查询.

INSERT INTO user(id,passowrd) VALUES (1,AES_ENCRYPT('mypassword','key'));
Run Code Online (Sandbox Code Playgroud)

Bor*_*lid 8

  • 我希望您的数据库列不是"passowrd".

那边......

Salt不是一种加密方法,它是一个随机的位,您需要在散列之前添加到每个密码以防止字典攻击.

应该使用AES加密来存储用户密码,这是可逆的.您不关心用户的密码什么,只知道他们知道密码:所以不要以可逆的形式存储密码.

相反,您使用密码的安全单向散列(例如SHA256甚至bcrypt)加上一些随机数据.为每个用户生成此随机垃圾"盐",并在散列之前附加到密码.然后将其与散列数据一起存储在数据库中,以便稍后比较密码.

通过这种方式,一个名为彩虹表(一个大型的乱码到明文映射字典)的攻击者无法看到"哦,看起来,Joe用户决定让他的密码'密码'!".这也可以防止某人强行破坏数据库中的所有密码,因为如果每个帐户都有自己独立的密码,则必须对每个密码进行独立攻击.

  • +1几乎在所有情况下都应使用盐渍单向哈希.任何可逆加密都会导致错误的人访问密码(即使只是您自己的员工,例如谁有权访问加密/解密算法).鉴于大多数用户(不幸)回收密码的倾向,这会带来很大的风险. (3认同)