【问题标题】:How can I encrypt data in mysql database?如何加密mysql数据库中的数据?
【发布时间】:2014-08-28 18:05:49
【问题描述】:

我有一个 PHP 文件,它允许用户将文本插入 MySql 数据库。我希望对这些数据进行加密。 (任何加密对我来说都可以......MD5,SHA1,SHA512,其中任何一个)当用户从数据库请求数据时,它显示为常规纯文本(他输入的值)。请帮帮我,我该怎么做?

【问题讨论】:

标签: mysql database encryption


【解决方案1】:

MD5、SHA1 和 SHA512 是散列函数,没有可逆加密。

我建议使用加密/解密对 AES_ENCRYPTAES_DECRYPT

【讨论】:

    【解决方案2】:

    MD5、SHA1、SHA512 是散列和压缩工具,因此无法解密被这些算法隐藏的文本(查看difference between hashing and encryption)。
    这 2 个 PHP 函数可以满足您对这种特定情况的需求:您可以将此函数用于encrypt,将这个函数用于decrypt

    【讨论】:

    • 您好,感谢您的回答。我见过许多使用 MD5 散列存储在数据库中的密码的 PHP 登录脚本。那么,如果这些算法都无法解密,如何解密呢?
    • @user3668837 仅使用MD5SHA1 ... 加密的密码以加密方式存储,永远不会以纯文本形式返回。用于加密和解密的 2 个函数允许使用您可以找到 here 的加密算法列表。请记住,MD5 是一个散列函数,因此无法解密其结果。您必须通过我的答案检查我给您的链接,以了解完全不同的加密和散列之间的区别。如果我的回答对你有帮助,请采纳。
    【解决方案3】:

    在用户注册时,将他/她选择的登录名和密码与盐值连接起来,用 PHP $PwdHash=md5($salt.$loginname.$password); 和将 $PwdHash 存储在数据库中。

    当用户想要稍后进行身份验证时,他/她会再次发送 $loginname 和 $password。 对获得的凭据重复相同操作 $PwdHash=md5($salt.$loginname.$password); 并将计算出的 $PwdHash 与存储在与 $loginname 对应的数据库行中的 PwdHash 进行比较。

    Salt 是您选择的任意常量秘密值,例如$salt="user3668837"; 。如果攻击者设法窃取数据库内容,则使用 salt 可防止攻击者使用 彩虹表 从您的数据库中挖掘密码。

    【讨论】:

    • 您好,感谢您的回复。实际上,我希望在用户请求时对输入的数据进行解密。数据应该按照用户输入的方式显示在屏幕上..而且 md5 无法解密....
    猜你喜欢
    • 2019-07-01
    • 1970-01-01
    • 2011-07-15
    • 1970-01-01
    • 2019-10-24
    • 2011-10-07
    • 2016-07-13
    • 2021-01-14
    • 2012-12-18
    相关资源
    最近更新 更多