zoukankan      html  css  js  c++  java
  • PHP加密扩展库—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//输出校验码

    ?>

  • 相关阅读:
    Oracle中的substr()函数和INSTR()函数和mysql中substring_index函数字符截取函数用法:计算BOM系数用量拼接字符串*计算值方法
    (转载)SDRAM驱动笔记
    【转】Verilog阻塞与非阻塞赋值使用要点
    【转转】(筆記) always block內省略else所代表的電路 (SOC) (Verilog)
    (原創) 如何處理signed integer的加法運算與overflow? (SOC) (Verilog)
    [转载]亚稳态
    Dev Exprss 发布部署
    Dev splliter 去除中间的分割显示
    DevTreeList中的新增、修改的设计
    Oracle 常用网址
  • 原文地址:https://www.cnblogs.com/furuihua/p/12108654.html
Copyright © 2011-2022 走看看