设为首页收藏本站帮助中心
查看: 770|回复: 0
收起左侧

[PHP/ASP/JSP] PHP对数据添加hash签名 尾部添加自定义哈希函数校验码 可拼接密码一起加密 防非法篡改

[复制链接]
发表于 2019-4-17 22:07:16 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?加入我们

x


  1. <?php

  2. header("Content-type: text/html; charset=gb2312");

  3. /*
  4. 数据添加签名 (尾部添加自定义哈希函数校验码防非法篡改)
  5. 参数1:要添加签名的数据
  6. 参数2:签名密码 (允许留空) 将拼接数据尾部一起加密,请勿通过网络传输,不正确的密码将无法通过验证。
  7. 参数3:自定义散列函数名 (留空默认为md5)


  8. 回调的函数名必须真实有效,需要提供两个参数:
  9. 参数1:规定要计算的字符串。
  10. 参数2:规定十六进制或二进制输出格式(默认提交TRUE):
  11. TRUE - 原始 16 字符二进制格式
  12. FALSE - 默认。32 字符十六进制数

  13. 本程序只对数据尾部添加hash签名,确保数据存储、传输是正确的,本函数不加密数据。
  14. 签名后不能改变数据长度以及任何1字节,否则将无效。

  15. */
  16. function hash_sign_encode($data,$password=null,$hash_name = "md5"){
  17.         return $data.$hash_name($data.$password,1);
  18. }

  19. /*
  20. 数据验证并解除签名(无效签名返回空)
  21. 参数见 hash_sign_encode() 函数
  22. */
  23. function hash_sign_decode($data,$password=null,$hash_name = "md5"){
  24.         $hl = strlen($hash_name(null,1));
  25.         $hash = substr($data,-$hl);
  26.         $data= substr($data,0,-$hl);
  27.         if($hash_name($data.$password,1) != $hash){
  28.                 return;
  29.         }
  30.                 return $data;
  31. }


  32. $a = hash_sign_encode("Hello World!Hello World!Hello World!Hello World!Hello World! 中文测试","123456","sha1");

  33. echo $a."<br>";
  34. echo hash_sign_decode($a,"123456","sha1");


复制代码

相关帖子

这个小可爱很神秘,什么都没留下
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 加入我们

本版积分规则