免费邀请码更改用户名CRC32解密2.0回帖奖励召回投票记录删除领夜猫子领6月福利帮助中心 本站已运行
搜索
查看: 61|回复: 4
收起左侧

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

[复制链接]
发表于 2019-4-15 21:20:57 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 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. ?>

复制代码

相关帖子

回复

使用道具 举报

腾讯云新春采购节 热门云产品3折起,爆款超值秒杀,新购高额满返,升级享优惠大礼包!
发表于 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 | 显示全部楼层
只要找到碰撞就解开了...
回复 支持 反对

使用道具 举报

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

本版积分规则

小黑屋|手机版|Archiver|官方QQ群|从F到0 ( 蒙ICP备17002595号-1 )
蒙公网安备 15010402000325号 腾讯云安全认证

GMT+8, 2019-6-25 14:55, 100.25.214.89 , Processed in 0.093750 second(s), 29 queries .

Powered by Discuz! X3.4 © 2001-2017 Comsenz Inc.

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