【发布时间】:2014-08-28 18:05:49
【问题描述】:
我有一个 PHP 文件,它允许用户将文本插入 MySql 数据库。我希望对这些数据进行加密。 (任何加密对我来说都可以......MD5,SHA1,SHA512,其中任何一个)当用户从数据库请求数据时,它显示为常规纯文本(他输入的值)。请帮帮我,我该怎么做?
【问题讨论】:
标签: mysql database encryption
我有一个 PHP 文件,它允许用户将文本插入 MySql 数据库。我希望对这些数据进行加密。 (任何加密对我来说都可以......MD5,SHA1,SHA512,其中任何一个)当用户从数据库请求数据时,它显示为常规纯文本(他输入的值)。请帮帮我,我该怎么做?
【问题讨论】:
标签: mysql database encryption
MD5、SHA1 和 SHA512 是散列函数,没有可逆加密。
我建议使用加密/解密对 AES_ENCRYPT 和 AES_DECRYPT。
【讨论】:
MD5、SHA1、SHA512 是散列和压缩工具,因此无法解密被这些算法隐藏的文本(查看difference between hashing and encryption)。
这 2 个 PHP 函数可以满足您对这种特定情况的需求:您可以将此函数用于encrypt,将这个函数用于decrypt
【讨论】:
MD5、SHA1 ... 加密的密码以加密方式存储,永远不会以纯文本形式返回。用于加密和解密的 2 个函数允许使用您可以找到 here 的加密算法列表。请记住,MD5 是一个散列函数,因此无法解密其结果。您必须通过我的答案检查我给您的链接,以了解完全不同的加密和散列之间的区别。如果我的回答对你有帮助,请采纳。
在用户注册时,将他/她选择的登录名和密码与盐值连接起来,用 PHP $PwdHash=md5($salt.$loginname.$password); 和将 $PwdHash 存储在数据库中。
当用户想要稍后进行身份验证时,他/她会再次发送 $loginname 和 $password。 对获得的凭据重复相同操作 $PwdHash=md5($salt.$loginname.$password); 并将计算出的 $PwdHash 与存储在与 $loginname 对应的数据库行中的 PwdHash 进行比较。
Salt 是您选择的任意常量秘密值,例如$salt="user3668837"; 。如果攻击者设法窃取数据库内容,则使用 salt 可防止攻击者使用 彩虹表 从您的数据库中挖掘密码。
【讨论】: