加入收藏 | 设为首页 | 会员中心 | 我要投稿 应用网_丽江站长网 (http://www.0888zz.com/)- 科技、建站、数据工具、云上网络、机器学习!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

介绍PHP Hash信息摘要扩展框架

发布时间:2022-07-16 15:59:28 所属栏目:PHP教程 来源:互联网
导读:本篇文章向大家介绍PHP的Hash信息摘要扩展框架,有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助。 PHP的Hash信息摘要扩展框架 今天我们主要学习的是 PHP 中一些 Hash 散列加密相关的扩展函数的使用,而不是 Hash 算法,这种加密其实也只是
  本篇文章向大家介绍PHP的Hash信息摘要扩展框架,有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助。
  PHP的Hash信息摘要扩展框架
  今天我们主要学习的是 PHP 中一些 Hash 散列加密相关的扩展函数的使用,而不是 Hash 算法,这种加密其实也只是一种更复杂一些的密钥算法,与 Hash 算法类似的是,我们输入的一串字符串,就像一个 Hash 表一样有其对应的 Hash 散列值,本质上和普通的数据结构中的 Hash 键值映射是一个道理,只是其算法更复杂一些。其实只要做过一段时间的 PHP 开发,一定会对两个函数很熟悉,它们就是 md5() 和 sha1() 。这两个函数就是分别生成 md5 和 sha1 算法的 Hash 加密。不过,今天我们学习的相比这两个函数更加的复杂一些,算法形式也更丰富一些。
 
  PHP 支持的 Hash 算法
 
 
  print_r(hash_algos());
 
  // Array
 
  // (
 
  //     [0] => md2
 
  //     [1] => md4
 
  //     [2] => md5
 
  //     [3] => sha1
 
  //     [4] => sha224
 
  //     [5] => sha256
 
  //     [6] => sha384
 
  //     [7] => sha512/224
 
  //     [8] => sha512/256
 
  //     [9] => sha512
 
  //     [10] => sha3-224
 
  //     [11] => sha3-256
 
  //     [12] => sha3-384
 
  //     [13] => sha3-512
 
  //     [14] => ripemd128
 
  //     [15] => ripemd160
 
  //     [16] => ripemd256
 
  //     [17] => ripemd320
 
  //     [18] => whirlpool
 
  //     [19] => tiger128,3
 
  //     [20] => tiger160,3
 
  //     [21] => tiger192,3
 
  //     [22] => tiger128,4
 
  //     [23] => tiger160,4
 
  //     [24] => tiger192,4
 
  //     [25] => snefru
 
  //     [26] => snefru256
 
  //     [27] => gost
 
  //     [28] => gost-crypto
 
  //     [29] => adler32
 
  //     [30] => crc32
 
  //     [31] => crc32b
 
  //     [32] => fnv132
 
  //     [33] => fnv1a32
 
  //     [34] => fnv164
 
  //     [35] => fnv1a64
 
  //     [36] => joaat
 
  //     [37] => haval128,3
 
  //     [38] => haval160,3
 
  //     [39] => haval192,3
 
  //     [40] => haval224,3
 
  //     [41] => haval256,3
 
  //     [42] => haval128,4
 
  //     [43] => haval160,4
 
  //     [44] => haval192,4
 
  //     [45] => haval224,4
 
  //     [46] => haval256,4
 
  //     [47] => haval128,5
 
  $data = "我们来测试一下Hash算法!";
 
   
 
  foreach (hash_algos() as $v) {
 
      $r = hash($v, $data);
 
      echo $v, ':', strlen($r), '::', $r, PHP_EOL;
 
  }
 
  // md2:32::3d63d5f6ce9f03379fb3ae5e1436bf08
 
  // md4:32::e9dc8afa241bae1bccb7c58d4de8b14d
 
  // md5:32::2801b208ec396a2fc80225466e17acac
 
  // sha1:40::0f029efe9f1115e401b781de77bf1d469ecee6a9
 
  // sha224:56::3faf937348ec54936be13b63feee846d741f8391be0a62b4d5bbb2c8
 
  // sha256:64::8f0bbe9288f6dfd2c6d526a08b1fed61352c894ce0337c4e432d97570ae521e3
 
  // sha384:96::3d7d51e05076b20f07dad295b161854d769808b54b784909901784f2e76db212612ebe6fe56c6d014b20bd97e5434658
 
  // ……
 
  // md4:32::d2eda43ee4fab5afc067fd63ae6390f1
 
  // md5:32::68bf5963e1426a1feff8149da0d0b88d
 
  // sha1:40::504bc44704b48ac75435cdccf81e0f056bac98ba
 
  // sha224:56::8beaf35baedc2cd5725c760ec77d119e3373f14953c74818f1243f69
 
  // sha256:64::23f2e6685fe368dd3ebe36e1d3d672ce8306500366ba0e8a19467c94e13ddace
 
  // sha384:96::740ce7488856737ed57d7b0d1224d053905661ffca083c02c6a9a9230499a4a3d96ff0a951b8d03dbafeeeb5c84a65a6
 
  // ……
 
  通过 hash_algos() 和 hash_hmac_algos() 函数,我们就可以获取到当前 PHP 环境中所支持的所有 Hash 算法,我们可以见到熟悉的 md5 和 sha1 ,也能见到 md2 、 sha224 、 ripemd320 、fnv1a64 等这些很少见到的算法。然后我们通过遍历这两个函数返回的内容,并使用 hash() 和 hash_hmac() 函数来对数据进行 Hash 加密并查看它们的内容就可以发现每种算法都能够成功返回不同的加密信息摘要,而且有不同的位数。
 
  hmac 相关的函数是 PHP 的 Hash 算法中的另一种形式,它是一个需要密钥的算法,也就是 hash_hmac() 的第三个参数。只有输入内容相同并且密钥也相同的内容返回的结果才会是一样的。也就是说,这个函数可以用于对称加密的信息传递验证 token 来使用。比如两个系统之间的接口互通如果需要一个固定 token 的,就可以使用这个函数来实现。

(编辑:应用网_丽江站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读