首页 > 编程笔记 > PHP笔记 阅读:8

PHP加密函数(md5()、sha1()和crypt())

在 PHP 中,常用的加密函数包括 md5() 函数、sha1() 函数和 crypt() 函数。本节将主要介绍这些加密函数的使用方法和技巧。

PHP md5()函数

MD5 是 Message-Digest Algorithm 5(信息-摘要算法)的缩写,它的作用是把任意长度的信息作为输入值,并将其换算成一个 128 位长度的“指纹信息”或“报文摘要”值来代表这个输入值,并以换算后的值作为结果。

md5() 函数就是使用的 MD5 算法,其语法格式如下:
string md5(string str[,bool raw_output]);
上述代码中的参数 str 为需要加密的字符串;参数 raw_output 是可选的,默认值为 false,若设置为 true,则该函数将返回一个二进制形式的密文。

例如:
<?php
echo '使用md5()函数加密字符串mypssword:';
echo md5('mypssword');
?>
程序的运行结果为:


目前很多网站用户注册的密码都是首先使用 MD5 进行加密,然后将密码保存到数据库中。当用户登录时,程序把用户输入的密码计算成 MD5 值,然后和数据库中保存的 MD5() 值进行对比,这种方法可以保护用户的个人隐私,提高安全性。

PHP crypt()函数

crypt() 函数主要完成单向加密功能,返回使用 DES、Blowfish 或 MD5 算法加密的字符串。

crypt() 函数的语法格式如下:
string crypt()(string str,string salt);
其中的参数 str 为需要加密的字符串;参数 salt 表示加密时使用的干扰串。

因为 crypt() 函数是单向加密函数,所以没有对应的解密函数。

在不同的操作系统上,该函数的行为不同,某些操作系统支持一种以上的算法类型。在安装时,PHP 会检查什么算法可用以及使用什么算法。具体的算法依赖于 salt 参数的格式和长度。通过增加由使用特定加密方法的特定字符串所生成的字符串数量,salt 可以使加密更安全。

crypt() 函数支持 4 种算法和长度,如下表所示:

表:crypt() 函数支持的 4 种算法和 salt 参数的长度
算法 salt 参数的长度
CRYPT_STD_DES 2-character(默认)
CRYPT_EXT_DES 9-character
CRYPT_MD5 12-character(以$1$开头)
CRYPT_BLOWFISH 16-character(以$2$开头)

例如:
<?php
$str = '时间是一切财富中最宝贵的财富。';  //声明字符串变量$str
echo '$str加密前的值为:'.$str;
$cry = crypt($str,'st');                  //对变量$str加密
echo '<p>$str加密后的值为:'.$cry;        //输出加密后的变量
?>
程序运行结果如下图所示:

PHP sha1()函数

sha1() 函数使用的是 SHA 算法,SHA 是 Secure Hash Algorithm(安全哈希算法)的缩写,该算法和 MD5 算法类似。

sha1() 函数的语法格式如下:
string sha1()(string str[,bool raw_output]);
其中的参数 str 为需要加密的字符串;参数 raw_output 是可选的,默认为 false,此时该函数返回一个 40 位的十六进制数,如果 raw_output 为 true,则返回一个 20 位的二进制数。

例如:
<?php
echo '使用md5()函数加密字符串mypassword:';
echo md5('mypassword'). '<br />';
echo '使用sha1()函数加密字符串mypassword:';
echo sha1 ('mypassword');
?>
程序运行结果如下图所示:

相关文章