与 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 一起使用的最佳密码加密和解密技术 [重复]的主要内容,如果未能解决你的问题,请参考以下文章