mhash的可以用于创建校验数值
什么是Mhash扩展库:Mhash是基于离散数学道理的不成逆向的php加密方法扩展库,其在默认情况下不开启。mhash的可以用于创建校验数值,动静摘要,动静认证码,,以及无需原文的关键信息生存(如暗码)等。
1.Mhash扩展库安置
关于Mhash库的安置跟Mcrypt扩展库安置是类似的,在这里就不做多介绍了,大家可以参考上一篇文章《PHP加密扩展库—Mcrypt扩展库》!深圳dd马达
2.Mhash扩展库常量
Mhash库撑持 MD5,SHA,CRC32等多种散列算法,可以使用mhash_count()和mhash_get_hash_name()函数输出撑持的算法名称。下面一起看下示例代码:
1
2
3
4
5
6
7
8
<?php
header("Content-Type:text/html; charset=utf-8");
$num = mhash_count(); //函数返回最大的hash id
echo "mhash库撑持的算法有:<br>";
for($i=0;$i<=$num;$i++){
echo $i."=>".mhash_get_hash_name($i)."<br>".""; //输出每一个hash id 的名称
}
?>
输出功效为:
注意:如果在实际应用中使用上面的常量,需要在算法名称前面加上 MHASH_作为前缀,好比 CRC32 暗示为 MHASH_CRC32。
3.Mhash应用
相比拟 Mcrypt 扩展库的 30 多个函数,Mhash库中只有 5 个函数,除了上面使用到的两个函数外,下面来介绍其他的 3 个函数。
(1)mhash_get_block_size()函数
函数语法格局如下:
1
int mhash_get_block_size ( int $hash )
该函数用来获取参数 hash 的区块巨细,好比:mhash_get_biock_size(MHASH_CRC32)。
(2)mhash()函数
函数语法格局如下:
1
string mhash(int hash,string data[,string key])
该函数返回一个哈希值。参数 hash 为要使用的算法,参数data 是要加密的数据,参数key是加密使用的密钥。
(3) mhash_keygen_s2k()函数
函数语法格局如下:
1
string mhash_keygen_s2k ( int $hash , string $password , string $salt, int $bytes )
该函数将按照参数password 和 salt 返回一个单位为字节的 key值,参数 hash 为要使用的算法。此中 salt 为一个固定 8 字节的值,如果用户给出的数值小与 8 字节,将用 0 补齐。
下面实例中使用了 mhash_keygen_s2k()函数生成一个校验码,并使用 bin2hex()函数将二进制功效转换为十六进制。具体代码如下:
1
2
3
4
5
6
7
8
9
10
11
<?php
header("Content-Type:text/html; charset=utf-8");
$filename = "08.txt"; // 文件路径
$str = file_get_contents($filename); //读取文件内容到变量$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 "文件 08.txt 的校验码是:".$str_mhash; //输出校验码
?>
PHP加密扩展库—Mhash扩展库
温馨提示: 本文由Jm博客推荐,转载请保留链接: https://www.jmwww.net/file/web/32898.html