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

时间:2012-02-04 06:41:01

标签: php encryption

  

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

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

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

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

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

3 个答案:

答案 0 :(得分:7)

首先,md5('password') 不加密哈希数据后,无法恢复原始密码。 NB技术读者:由于存在有限数量的哈希值和无限数量的不同字符串,因此暴力攻击也无法恢复密码。

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

加密,因为它通常被称为明文和某种私钥。加密算法的一个例子是AES-256(“Rijndael”是赢得AES比赛并因此获得冠军的算法的名称)。 AES-256使用256位密钥,在正确实施时通常被认为非常安全。

密码学不是一个应该轻易接近的主题。要做到正确是非常困难的,而当你不这样做时会产生后果,虽然这似乎是矛盾的,既微妙又严重。

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

在您完成评估是否需要能够恢复密码之后,请确定您无需恢复密码。

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

答案 1 :(得分:1)

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

答案 2 :(得分:1)

对于PHP版本5.3 +

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

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

我建议AES256比bcrypt更快且安全