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


Posted in PHP onJune 24, 2020

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;
}

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

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

PHP 相关文章推荐
php4的彩蛋
Oct 09 PHP
怎么样可以把 phpinfo()屏蔽掉?
Nov 24 PHP
PHP 时间日期操作实战
Aug 26 PHP
本地计算机无法启动Apache故障处理
Aug 08 PHP
Yii实现多按钮保存与提交的方法
Dec 03 PHP
使用PHP实现生成HTML静态页面
Nov 18 PHP
大家须知简单的php性能优化注意点
Jan 04 PHP
php+ajax无刷新上传图片的实现方法
Dec 06 PHP
php 根据自增id创建唯一编号类
Apr 06 PHP
解决出现SoapFault (looks like we got no XML document)的问题
Jun 24 PHP
PHP文字转图片功能原理与实现方法分析
Aug 31 PHP
PHP策略模式写法
Apr 01 PHP
解决PhpStorm64不能启动的问题
Jun 20 #PHP
php实现断点续传大文件示例代码
Jun 19 #PHP
PHP基于openssl实现非对称加密代码实例
Jun 19 #PHP
如何在PHP环境中使用ProtoBuf数据格式
Jun 19 #PHP
基于PHP实现堆排序原理及实例详解
Jun 19 #PHP
深入分析PHP设计模式
Jun 15 #PHP
Laravel6.18.19如何优雅的切换发件账户
Jun 14 #PHP
You might like
回答PHPCHINA上的几个问题:URL映射
2007/02/14 PHP
php记录日志的实现代码
2011/08/08 PHP
浅谈Yii乐观锁的使用及原理
2017/07/25 PHP
50个优秀经典PHP算法大集合 附源码
2020/08/26 PHP
JQuery为textarea添加maxlength属性并且兼容IE
2013/04/25 Javascript
jquery垂直公告滚动实现代码
2013/12/08 Javascript
深入理解JavaScript系列(22):S.O.L.I.D五大原则之依赖倒置原则DIP详解
2015/03/05 Javascript
JS实现控制表格内指定单元格内容对齐的方法
2015/03/30 Javascript
JavaScript返回上一页的三种方法及区别介绍
2015/07/04 Javascript
异步JS框架的作用以及实现方法
2015/10/29 Javascript
JS函数的几种定义方式分析
2015/12/17 Javascript
nodejs修复ipa处理过的png图片
2016/02/17 NodeJs
vue实现ajax滚动下拉加载,同时具有loading效果(推荐)
2017/01/11 Javascript
jQuery.cookie.js实现记录最近浏览过的商品功能示例
2017/01/23 Javascript
使用nodejs下载风景壁纸
2017/02/05 NodeJs
微信小程序 引用其他js文件实现代码
2017/02/22 Javascript
jQuery实现简单弹窗遮罩效果
2017/02/27 Javascript
详解vue-router基本使用
2017/04/18 Javascript
深入理解Angular4中的依赖注入
2017/06/07 Javascript
vue 封装自定义组件之tabal列表编辑单元格组件实例代码
2017/09/07 Javascript
vue 之 css module的使用方法
2018/12/04 Javascript
vue移动端使用appClound拉起支付宝支付的实现方法
2019/11/21 Javascript
vue中上传视频或图片或图片和文字一起到后端的解决方法
2019/12/01 Javascript
解决vue页面刷新,数据丢失的问题
2020/11/24 Vue.js
python运行其他程序的实现方法
2017/07/14 Python
Python三元运算与lambda表达式实例解析
2019/11/30 Python
pytorch 归一化与反归一化实例
2019/12/31 Python
Html5 video标签视频的最佳实践
2020/02/26 HTML / CSS
西部世纪面试题
2014/12/05 面试题
法律工作求职自荐信
2013/10/31 职场文书
个人自我剖析材料
2014/02/07 职场文书
初中同学聚会感言
2014/02/11 职场文书
电子专业毕业生自荐信
2014/05/25 职场文书
赔偿协议书范本
2014/09/12 职场文书
2015年员工试用期工作总结
2014/12/12 职场文书
民间借贷纠纷案件代理词
2015/05/26 职场文书