当前位置:首页 > PHP教程 > php高级应用 > 列表

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

发布:smiling 来源: PHP粉丝网  添加日期:2022-03-15 09:51:17 浏览: 评论:0 

这篇文章主要介绍了基于PHP实现解密Cloudflar邮箱保护,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下。

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

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

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

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

  1. <a class="__cf_email__" data-cfemail="30515253705152531e535f5d" href="/cdn-cgi/l/email-protection" rel="external nofollow" > 
  2. [email protected
  3. </a> 
  4. <script data-cfhash="f9e31" type="text/javascript"
  5.  /* <![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){}}()/* ]]> */ 
  6. </script> 

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

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

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

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

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

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

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

Tags: PHP解密 PHP加密 Cloudflar

分享到: