基于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 相关文章推荐
php代码优化及php相关问题总结
Oct 09 PHP
模仿OSO的论坛(五)
Oct 09 PHP
PHP加密函数 Javascript/Js 解密函数
Sep 23 PHP
PHP实现绘制3D扇形统计图及图片缩放实例
Oct 01 PHP
PHP生成不重复随机数的方法汇总
Nov 19 PHP
PHP生成json和xml类型接口数据格式
May 17 PHP
ThinkPHP中使用Ueditor富文本编辑器
Sep 02 PHP
php使用curl并发减少后端访问时间的方法分析
May 12 PHP
PHP微信刮刮卡 附微信接口
Jul 22 PHP
PHP实现微信JS-SDK接口选择相册及拍照并上传的方法
Dec 05 PHP
PHP面相对象中的重载与重写
Feb 13 PHP
PHP判断一个数组是另一个数组子集的方法详解
Jul 31 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
织梦模板标记简介
2007/03/11 PHP
php SQL Injection with MySQL
2011/02/27 PHP
php去除重复字的实现代码
2011/09/16 PHP
php实现的二叉树遍历算法示例
2017/06/15 PHP
bindParam和bindValue的区别以及在Yii2中的使用详解
2018/03/12 PHP
JavaScript 产生不重复的随机数三种实现思路
2012/12/13 Javascript
JavaScript检测字符串中是否含有html标签实现方法
2015/07/01 Javascript
JavaScript高级教程5.6之基本包装类型(详细)
2015/11/23 Javascript
jsonp跨域请求数据实现手机号码查询实例分析
2015/12/12 Javascript
Bootstrap布局组件应用实例讲解
2016/02/17 Javascript
搞定immutable.js详细说明
2016/05/02 Javascript
分享一个插件实现水珠自动下落效果
2016/06/01 Javascript
AngularJs  Understanding Angular Templates
2016/09/02 Javascript
详解Nodejs的timers模块
2016/12/22 NodeJs
AngularJS学习第二篇 AngularJS依赖注入
2017/02/13 Javascript
Vue中fragment.js使用方法详解
2017/03/09 Javascript
jQuery实现的简单动态添加、删除表格功能示例
2017/09/21 jQuery
express+mockjs实现模拟后台数据发送功能
2018/01/07 Javascript
Vue页面骨架屏的实现方法
2018/05/22 Javascript
了解javascript中let和var及const关键字的区别
2019/05/24 Javascript
LayUI动态设置checkbox不显示的解决方法
2019/09/02 Javascript
python算法学习之计数排序实例
2013/12/18 Python
Python连接mysql数据库的正确姿势
2016/02/03 Python
Python基于回溯法子集树模板解决数字组合问题实例
2017/09/02 Python
浅谈Python实现Apriori算法介绍
2017/12/20 Python
Python爬虫实例_利用百度地图API批量获取城市所有的POI点
2018/01/10 Python
详解Python3注释知识点
2019/02/19 Python
使用Python的datetime库处理时间(RPA流程)
2019/11/24 Python
python 实现 hive中类似 lateral view explode的功能示例
2020/05/18 Python
Django启动时找不到mysqlclient问题解决方案
2020/11/11 Python
Joseph官网:英国小众奢侈品牌
2019/05/17 全球购物
护理专业毕业生推荐信
2013/10/31 职场文书
生态养殖创业计划书
2014/05/06 职场文书
消防安全宣传口号
2014/06/10 职场文书
大学生工作自荐书
2014/06/16 职场文书
2014年作风建设剖析材料
2014/10/23 职场文书