设为首页收藏本站淘宝杂货铺

从F到0 - From F to 0

 找回密码
 注册已关闭
搜索
查看: 3156|回复: 4
收起左侧

[PHP/ASP/JSP] PHP通过循环调用自定义hash散列哈希函数实现数据的对称异或加密与解密(默认为MD5加密)

[复制链接]
发表于 2019-4-15 21:20:57 | 显示全部楼层 |阅读模式
本帖最后由 QAQ 于 2019-4-18 17:01 编辑


  1. <?php

  2. header("Content-type: text/html; charset=gb2312");
  3. /*
  4. 数据加密与解密 (自定义哈希函数+异或实现)
  5. 加密和解密必须使用一致的密码和哈希函数,否则将出错
  6. 参数1:要加密或解密的数据
  7. 参数2:密码
  8. 参数3:自定义散列函数名 (留空默认为md5)
  9. 回调的函数名必须真实有效,需要提供两个参数:
  10. 参数1:规定要计算的字符串。
  11. 参数2:规定十六进制或二进制输出格式(默认提交TRUE):
  12. TRUE - 原始 16 字符二进制格式
  13. FALSE - 默认。32 字符十六进制数
  14. 每次返回的散列长度必须一致,否则会出现异常。
  15. */

  16. function dxead($data,$password,$hash_name="md5"){
  17.         $hash = $password;
  18.         $hl = strlen($hash_name(null,1));
  19.         $len = strlen($data);
  20.         $j = 0;
  21.         $gn = floor($len/$hl)+1;
  22.         do {
  23.         $hash = $hash_name($hash,1);
  24.         $e = $gn == 1 ? $len % $hl : $hl;
  25.                 for($i=0;$i<$e;$i++){
  26.                 $data[$j] = chr(ord($hash[$i]) ^ ord($data[$j]));
  27.                 $j++;
  28.                 }
  29.         } while(--$gn);
  30.         return $data;
  31. }

  32. $a =  dxead("Hello World!1234567890 中文测试","1234567","md5");
  33. echo $a."<br>";
  34. $a =  dxead($a,"1234567","md5");

  35. echo $a;

  36. ?>

复制代码

相关帖子

发表于 2019-4-16 08:31:54 | 显示全部楼层
还有这方法
发表于 2019-4-16 15:55:31 | 显示全部楼层
这函数名也是醉了...
发表于 2019-4-16 18:40:57 | 显示全部楼层
1心1亿 发表于 2019-4-16 15:55
这函数名也是醉了...

我也不知道啥意思...
发表于 2019-4-17 23:43:33 | 显示全部楼层
只要找到碰撞就解开了...
您需要登录后才可以回帖 登录 | 注册已关闭

本版积分规则

QQ|手机版|Archiver|从F到0 ( 蒙ICP备17002595号-1 )
蒙公网安备15010402000325号

腾讯云安全认证

GMT+8, 2024-3-29 08:00 , Processed in 0.421024 second(s), 20 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表