php mhash,PHP加密扩展库-Mhash扩展库实例用法详解

PHP加密扩展库—Mhash扩展库

什么是Mhash扩展库:Mhash是基于离散数学原理的不可逆向的php加密方式扩展库,其在默认情况下不开启。mhash的可以用于创建校验数值,消息摘要,消息认证码,以及无需原文的关键信息保存(如密码)等。

1.Mhash扩展库安装

关于Mhash库的安装跟Mcrypt扩展库安装是类似的,在这里就不做多介绍了,大家可以参考上一篇文章《PHP加密扩展库—Mcrypt扩展库》!

2.Mhash扩展库常量

Mhash库支持 MD5,SHA,CRC32等多种散列算法,可以使用mhash_count()和mhash_get_hash_name()函数输出支持的算法名称。下面一起看下示例代码:<?php

header("Content-Type:text/html; charset=utf-8");

$num = mhash_count(); //函数返回最大的hash id

echo "mhash库支持的算法有:
";

for($i=0;$i<=$num;$i++){

echo $i."=>".mhash_get_hash_name($i)."
".""; //输出每一个hash id 的名称

}

?>

输出结果为:

43a23dc5f80ec4b3a7e1adeb93fa68be.png

注意:如果在实际应用中使用上面的常量,需要在算法名称前面加上 MHASH_作为前缀,比如 CRC32 表示为 MHASH_CRC32。

3.Mhash应用

相对比 Mcrypt 扩展库的 30 多个函数,Mhash库中只有 5 个函数,除了上面使用到的两个函数外,下面来介绍其他的 3 个函数。

(1)mhash_get_block_size()函数

函数语法格式如下:int mhash_get_block_size ( int $hash )

该函数用来获取参数 hash 的区块大小,比如:mhash_get_biock_size(MHASH_CRC32)。

(2)mhash()函数

函数语法格式如下:string mhash(int hash,string data[,string key])

该函数返回一个哈希值。参数 hash 为要使用的算法,参数data 是要加密的数据,参数key是加密使用的密钥。

(3) mhash_keygen_s2k()函数

函数语法格式如下:string mhash_keygen_s2k ( int $hash , string $password , string $salt, int $bytes )

该函数将根据参数password 和 salt 返回一个单位为字节的 key值,参数 hash 为要使用的算法。其中 salt 为一个固定 8 字节的值,如果用户给出的数值小与 8 字节,将用 0 补齐。

下面实例中使用了 mhash_keygen_s2k()函数生成一个校验码,并使用 bin2hex()函数将二进制结果转换为十六进制。具体代码如下:<?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; //输出校验码

?>

输出的结果为;

e1306dd6baba811b127a4cd4cedfb962.png

【相关推荐】

1. 相关专题推荐:《PHP加密函数》

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值