【发布时间】:2012-10-27 17:29:55
【问题描述】:
我四处搜索,但找不到一个很好的资源来介绍 Blowfish 的整个实施过程。
我使用的是 5.3.8,所以我知道我可以使用 crypt() 函数,并且我需要向它传递一个盐形式为
$2[x,y,a]$[base 2 log of rounds]$[some string]
但我在某处读到,您每次都需要唯一地生成盐。这是否意味着您必须将盐存储在数据库中?如果有人窃取了您的数据库,您与使用 shaX 的情况不同吗?所有这些到底是如何工作的。
也
我一直在阅读 Blowfish 也用于解密密码。我理解它只是一种散列算法,您可以在其中加密两个字符串,然后检查它们是否匹配。您如何以及为什么要使用可以解密的算法?
【问题讨论】:
-
盐只是为了防止预计算表(又名彩虹表)攻击。 PHP 5.5 将支持一个简单的 API,用于处理具有良好默认值的散列密码。如果您使用的是 PHP 5.3.7+,我建议使用 compat lib。
-
"您如何以及为什么要使用可以解密的算法?"散列!=加密。散列是一种方法。
标签: php encryption blowfish