1. 什么是散列加密?
散列加密是一种将任意长度的消息压缩成固定长度的消息摘要的过程。它的主要作用是提供一种数据完整性保护的手段。
散列加密通常被用于密码系统、信息隐藏和数据完整性检查等领域,其应用广泛,例如:密码学?数字签名?消息完整性检查?指纹识别?信息隐藏?数据处理?安全传输。
散列加密原理: 将明文进行相应的变换,使之产生的结果长度固定,且不可逆转,这样可以避免被翻译攻击。
2. PHP实现散列加密可行性
PHP具备很强的散列加密计算能力,同时也拥有许多现成的散列加密函数,例如 md5 摘要算法、 sha1 安全散列算法、 sha256 和 sha512,还有 bcrypt 等。
散列算法既可以和密码一起使用,也可用于普通文本的加密。应在保护密码时使用它们。在大多数情况下,即使传输过程中被攻击者捕获到了摘要算法的值,也不可能逆向还原出原始数据。
3. 实现PHP散列加密示例
3.1 MD5算法实现
这是一个使用 PHP 自带的 md5() 函数实现的散列加密示例:
function md5_encrypt($password){
$password_md5 = md5($password);
return $password_md5;
}
3.2 SHA1算法实现
这是一个使用 PHP 自带的 sha1() 函数实现的散列加密示例:
function sha1_encrypt($password){
$password_sha1 = sha1($password);
return $password_sha1;
}
3.3 HMAC-SHA1算法实现
这是一个使用 PHP 自带的 hash_hmac() 函数实现的散列加密示例:
function hmac_sha1_encrypt($password){
$key = 'secret_key';
$password_hmac_sha1 = hash_hmac('sha1', $password, $key);
return $password_hmac_sha1;
}
上面这个函数实现了使用 HMAC-SHA1 摘要算法进行密码加密,它需要使用一个密钥,这里用 secret_key 作为密钥计算出密码的散列值。
3.4 Bcrypt算法实现
这是一个使用 PHP 内置的 password_hash() 函数实现的 bcrypt 算法的加密示例:
function bcrypt_encrypt($password){
$password_bcrypt = password_hash($password, PASSWORD_BCRYPT);
return $password_bcrypt;
}
这个函数使用了 PHP 的内置密码哈希函数 password_hash(),指定了 PASSWORD_BCRYPT 算法类型,将密码转化为一个加密后的字符串。