数据加密的原理就是对原来明文的文件或数据按照某种算法进行处理,使其成为不可读的一段代码,通常称为“密文”
一、crypt()
crypt()函数可以完成单向加密功能,语法是:
string crypt(string str[,string salt])
其中,str是需要加密的字符串,salt为加密时使用的干扰串。如果省略掉第二个参数,则会随机生成一个干扰串。
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 = "这是一个关于PHP加密函数的实例";
echo '加密前$str的值为:'.$str;
echo "<p>";
$cryptstr = crypt($str);
echo '加密后的值为:'.$cryptstr;
?>
运行结果:
注意:每次刷新都会出现不同的加密结果。 php 5.6及之后的版本会在没有它的情况下抛出一个 E_NOTICE 级别的错误。为了更好的安全性,请确保指定一个足够强度的盐值。
二、md5()
md5函数使用MD5算法,它的作用是把不同长度的数据信息经过一系列的算法计算成一个128位的数值。
语法格式为:
string md5(string str[,bool raw_output])
字符串str为要加密的明文,raw_output默认为:false,如果设为true,则函数返回一个二进制形式的密文。
很多网站注册用户的密码都使用md5加密,然后保存到数据库中,用户登录时,程序把用户输入的密码计算成md5值,然后再和数据库中保存的md5值进行比较。在这个过程中,程序自身都不会知道用户的真实密码,从而保证用户的个人隐私,提高安全性。
实例:
<?php
$str = "这是一个md5加密的字符串";
$strmd5 = md5($str);
echo $strmd5;
?>
运行结果:
三、sha1()
和md5加密算法类似,sha算法为安全哈希算法。
语法为:
string sha1(string str[,bool raw_output])
字符串str为要加密的明文,raw_output默认为:false,如果为false,则函数返回一个40位的十六进制数,如果设为true,则函数返回一个20位的二进制数。
例如:
<?php
$str = "hello"; //定义字符串hello
$strmd5 = md5($str); //md5加密
$strsha1 = sha1($str); //sha1加密
echo "使用md5加密字符串后的值为:".$strmd5;
echo "<p>";
echo "使用sha1加密字符串后的值为:".$strsha1;
?>
运行结果: