PHP内置加密函数
函数名 | 描述 |
---|---|
md5 | 单向加密,返回32位十六进制形式字符串,可以通过枚举、碰撞的方式破解 |
crypt | 单向散列算法,第一个参数为需要加密的字符串,第二个为盐值 |
sha1 | 单向散列算法,返回40位长度字符串 |
urlencode | 双向加密,严格应该是编码 |
重要的敏感数据进行多次加密,以防被轻易破解
PHP加密扩展库 Mcrypt
需要在配置文件中开启 extension=php_mcrypt.dll
// 查看加密种类
function showMcrypyKinds() {
if (!function_exists('mcrypt_list_algorithms')) {
exit('没开启Mcrypt加密');
}
//函数返回 Mcrypt支持的加密算法数组
$atr = mcrypt_list_algorithms();
echo "支持算法类型有:<br/>";
echo "<pre>";
print_r($atr);
echo "</pre>";
}
//查看加密模式
function showMcrypyModes() {
if (!function_exists('mcrypt_list_algorithms')) {
exit('没开启Mcrypt加密');
}
$atr = mcrypt_list_modes();
echo "支持加密模式有:<br/>";
echo "<pre>";
print_r($atr);
echo "</pre>";
}
$str = "被加密的内容:加密内容............."; //加密文本
$key = "abcdefgh"; //将密钥长度截取到8位,这样能兼容5.6后的PHP版本
$cipher = MCRYPT_DES; //密码类型
// ECB加密模式不需要创建iv初始化向量 非ECB模式需要保存向量用于解密
$modes = MCRYPT_MODE_CBC; //密码模式
$iv = mcrypt_create_iv(mcrypt_get_iv_size($cipher, $modes), MCRYPT_RAND); //初始化向量
echo "加密前:".$str."<p>";
$str_encrypt = mcrypt_encrypt($cipher, $key, $str, $modes, $iv); //加密函数
echo "加密后:".$str_encrypt."<p>";
$str_decrypt = mcrypt_decrypt($cipher, $key, $str_encrypt, $modes, $iv); //解密函数
echo "还原:".$str_decrypt."<p>";
PHP加密扩展库 Mhash扩展库
基于离散数学原理的不可逆向的php加密方式扩展库,用于创建校验数值,消息摘要,消息认证码,以及无需原文的关键信息保存
如上开启拓展
//查看加密模式
function showMhashKinds() {
$num = mhash_count(); //函数返回最大的hash id
echo "mhash库支持的算法有:
";
for($i=0;$i<=$num;$i++){
echo $i."=>".mhash_get_hash_name($i)."
".""; //输出每一个hash id 的名称
}
}
$str = '我的校验内容'; //读取文件内容到变量$str中
$hash = 2; //设置hash值
$password = "111"; //设置变量$password
$salt = "1234"; //设置变量$salt
$key = mhash_keygen_s2k(1, $password, $salt, 10); //生成key 值
$str_mhash = bin2hex(mhash($hash, $str, $key)); //使用$key 值、$hash值对字符串$str 加密
echo "校验码是:".$str_mhash; //输出校验码