基于PHP实现解密或加密Cloudflar邮箱保护

作者:枫之落叶 时间:2023-07-22 13:22:37 

Cloudflare 有一项功能挺不错的,就是将页面上所有的邮箱地址都加密起来,防止机器人抓到然后干坏事。

这项功能要在后台开启 email address obfuscation

之后就可以在页面上加入一个邮箱地址,比如说 abc@abc.com

查看源代码就能发现类似如下的代码


<a class="__cf_email__" data-cfemail="30515253705152531e535f5d" href="/cdn-cgi/l/email-protection" rel="external nofollow" >
[email protected]
</a>
<script data-cfhash="f9e31" type="text/javascript">
/* <![CDATA[ */!function(t,e,r,n,c,a,p){try{t=document.currentScript||function(){for(t=document.getElementsByTagName('script'),e=t.length;e--;)if(t[e].getAttribute('data-cfhash'))return t[e]}();if(t&&(c=t.previousSibling)){p=t.parentNode;if(a=c.getAttribute('data-cfemail')){for(e='',r='0x'+a.substr(0,2)|0,n=2;a.length-n;n+=2)e+='%'+('0'+('0x'+a.substr(n,2)^r).toString(16)).slice(-2);p.replaceChild(document.createTextNode(decodeURIComponent(e)),c)}p.removeChild(t)}}catch(u){}}()/* ]]> */
</script>

我们可以使用 PHP 的方式将这个邮箱地址解密出来


function deCFEmail($encode){
$k = hexdec(substr($encode,0,2));
for($i=2, $m=''; $i < strlen($encode) - 1; $i += 2){
$m.=chr(hexdec(substr($encode, $i, 2))^$k);
}
return $m;
}
echo deCFEmail("30515253705152531e535f5d")."\n";


得到的结果就是上面所说的 abc@abc.com

但是我们不想用 Cloudflare 的相关服务,就是单纯想用他这种加密技术,所以我们就得将加密的算法也找出来

我们可以利用上面解密的代码反向执行,就可以得到一个加密的算法了


function encodeEmail($email, $key=0) {
$chars = str_split($email);
$string = '';
$key = $key ? $key : rand(10, 99);
foreach ($chars as $value) {
$string .= sprintf("%02s", dechex(ord($value)^$key));
}
return dechex($key).$string;
}

我们就能利用这个加密算法,将手机号、邮箱地址、身份证等各种敏感的信息都加密起来,防止别人能轻易的抓取到数据

来源:https://blog.shiniv.com/2016/09/decode-encode-cloudflare-address-obfuscation/

标签:PHP,解密,加密,Cloudflar,邮箱
0
投稿

猜你喜欢

  • Linux中大内存页Oracle数据库优化的方法

    2023-07-19 11:24:57
  • python读写ini文件示例(python读写文件)

    2023-06-21 03:10:14
  • 解决python明明pip安装成功却找不到包的问题

    2021-05-21 14:50:40
  • Python开发的实用计算器完整实例

    2023-07-25 17:11:53
  • 浅谈JavaScript的自动垃圾收集机制

    2023-08-13 15:18:57
  • 如何用Python和JS实现的Web SSH工具

    2021-04-23 13:50:13
  • golang正则之命名分组方式

    2024-05-22 10:17:10
  • python tkinter实现学生信息管理系统

    2021-11-01 18:46:16
  • asp如何实现网上考试功能?

    2010-05-24 18:32:00
  • MySQL8.0的WITH查询详情

    2024-01-24 16:43:16
  • IE地址栏显示网站图标制作方法

    2007-10-13 11:08:00
  • mysql怎么设置最大连接数详解

    2024-01-24 04:44:55
  • MSSQL优化之探索MSSQL执行计划(转)

    2011-11-03 17:16:21
  • Vue日期时间选择器组件使用方法详解

    2024-05-02 16:35:27
  • MySQL如何删除表中的数据

    2024-01-13 00:12:41
  • 深入了解Hybrid App技术的相关知识

    2023-08-10 09:36:02
  • ASP动态生成的javascript表单验证代码

    2008-10-13 20:11:00
  • Python学习之字符串常用操作详解

    2022-07-14 18:54:48
  • 解决IOS端微信H5页面软键盘弹起后页面下方留白的问题

    2024-04-27 15:47:30
  • 中国传统色彩名录

    2007-11-29 18:36:00
  • asp之家 网络编程 m.aspxhome.com