与 PHP 一起使用的最佳密码加密和解密技术 [重复]

Posted

技术标签:

【中文标题】与 PHP 一起使用的最佳密码加密和解密技术 [重复]【英文标题】:best password encryption and decryption technique to be used with PHP [duplicate] 【发布时间】: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 的有限了解,我别无选择 【参考方案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 更快且安全

【讨论】:

以上是关于与 PHP 一起使用的最佳密码加密和解密技术 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

SSL 替代方案 - 使用 JavaScript 加密密码提交给 PHP 进行解密

java加密用PHP解密

php源代码被加密了,请问如何解密?

java密码加密与解密

PHP如何对用户密码进行加密

如何加密解密php源代码