【问题标题】:best password encryption and decryption technique to be used with PHP [duplicate]与 PHP 一起使用的最佳密码加密和解密技术 [重复]
【发布时间】:2012-02-26 16:18:24
【问题描述】:

可能重复:
Best way to use PHP to encrypt and decrypt?

对于我的项目,我想以加密格式存储密码,

所以我已经使用md5('password') 存储它,但我的项目要求是我们应该能够解密密码,并且众所周知,我们无法解密 md5 加密字符串。

所以我选择它使用base64_decode('password') 进行编码并使用base64_decode('encodedpassword') 对其进行解码。

但我想知道使用base64_encode 是最佳做法吗?或者有没有其他的PHP加密解密技术?

【问题讨论】:

  • 我知道,但根据我对 PHP 的有限了解,我别无选择

标签: php encryption


【解决方案1】:

首先,md5('password') 不是加密散列数据后,您无法恢复原始密码。技术读者请注意:暴力攻击也无法恢复密码,因为散列的数量是有限的,不同的字符串数量是无限的。

现在,base64_encode('password') 也不是加密,除了可能是最松散的含义。任何人都可以查看 Base64 文本并恢复原始密码。

众所周知的加密由明文和某种私钥组成。加密算法的一个例子是 AES-256(“Rijndael”是赢得 AES 竞赛的算法的名称,因此也是标题)。 AES-256 使用 256 位密钥,并且在正确实施时通常被认为非常安全。

密码学不是一个应该轻易接近的话题。做对是极其困难的,如果你做错了,后果是非常困难的,尽管这似乎是矛盾的,既微妙又严重。

您应该非常仔细地评估您是否需要能够恢复密码。在 99.9999999% 的情况下,答案是“否”。事实上,我想不出密码的纯文本对你来说很重要。

在您评估完是否需要能够恢复密码后,决定您不需要能够恢复密码。

在这一步之后,如果您仍然认为您需要能够恢复密码,请查看已经为 PHP 编写的加密库。 OpenSSL 是一个经过良好测试的普遍接受的加密框架,它实现了几乎所有流行的加密标准,但它可能有点难以使用。 mcrypt 安装非常普遍,通常更易于使用。

【讨论】:

    【解决方案2】:

    我通常只使用 sha-1 + 盐.. 看看 crypt 函数。

    【讨论】:

      【解决方案3】:

      对于 PHP 版本 5.3+

      你会使用Bcrypt,这是我所知道的最强哈希。

      但问题是它比其他加密要慢。

      我推荐AES256,它比 bcrypt 更快且安全

      【讨论】:

        猜你喜欢
        • 2013-07-06
        • 2010-11-20
        • 2010-10-02
        • 2016-11-10
        • 2017-10-07
        • 1970-01-01
        • 2010-10-21
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多