基于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中static,const与define的使用区别
Jun 18 PHP
ThinkPHP中处理表单中的注意事项
Nov 22 PHP
PHP中的替代语法介绍
Jan 09 PHP
WordPress中用于更新伪静态规则的PHP代码实例讲解
Dec 18 PHP
PHP身份证校验码计算方法
Aug 10 PHP
PHP实现链式操作的原理详解
Sep 16 PHP
Yii2.0中使用js异步删除示例
Mar 10 PHP
Yii2下点击验证码的切换实例代码
Mar 14 PHP
ThinkPHP开发--使用七牛云储存
Sep 14 PHP
php+redis消息队列实现抢购功能
Feb 08 PHP
PHP高并发和大流量解决方案整理
Dec 24 PHP
tp5.1 框架join方法用法实例分析
May 26 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
php 获取可变函数参数的函数
2009/08/26 PHP
PHP通过header实现文本文件下载的代码
2010/08/08 PHP
php使用GeoIP库实例
2014/06/27 PHP
一实用的实现table排序的Javascript类库
2007/09/12 Javascript
jQuery EasyUI API 中文文档 - ProgressBar 进度条
2011/09/29 Javascript
浅析Js(Jquery)中,字符串与JSON格式互相转换的示例(直接运行实例)
2013/07/09 Javascript
js 针对html DOM元素操作等经验累积
2014/03/11 Javascript
基于JavaScript实现全屏透明遮罩div层锁屏效果
2016/01/26 Javascript
JavaScript 弹出子窗体并返回结果到父窗体的实现代码
2016/05/28 Javascript
jquery层级选择器的实现(匹配后代元素div)
2016/09/05 Javascript
Bootstrap CSS组件之下拉菜单(dropdown)
2016/12/17 Javascript
ES6新特性四:变量的解构赋值实例
2017/04/21 Javascript
EasyUI中的dataGrid的行内编辑
2017/06/22 Javascript
js模块加载方式浅析
2017/08/12 Javascript
JavaScript实现异步图像上传功能
2018/07/12 Javascript
angular中如何绑定iframe中src的方法
2019/02/01 Javascript
vue router动态路由设置参数可选问题
2019/08/21 Javascript
VUE实现移动端列表筛选功能
2019/08/23 Javascript
微信小程序 授权登录详解(附完整源码)
2019/08/23 Javascript
Python中的exec、eval使用实例
2014/09/23 Python
Python matplotlib绘制饼状图功能示例
2019/09/10 Python
Jupyter notebook 启动闪退问题的解决
2020/04/13 Python
CSS3使用border-radius属性制作圆角
2014/12/22 HTML / CSS
详解移动端HTML5页面端去掉input输入框的白色背景和边框(兼容Android和ios)
2016/12/15 HTML / CSS
Html5之自定义属性(data-,dataset)
2019/11/19 HTML / CSS
HTML5 3D旋转相册的实现示例
2019/12/03 HTML / CSS
东南亚地区最大的购物网站Lazada新加坡站点:Lazada.sg
2016/07/17 全球购物
澳大利亚百货商店中销量第一的商务衬衫品牌:Van Heusen
2018/07/26 全球购物
ManoMano英国:欧洲第一家专注于DIY和园艺市场的电商平台
2020/03/12 全球购物
中专生学习生活的自我评价分享
2013/10/27 职场文书
会计学专业求职信
2014/07/17 职场文书
2014年企业党建工作总结
2014/12/18 职场文书
党校学习个人总结
2015/02/15 职场文书
字典算法实现及操作 --python(实用)
2021/03/31 Python
python中urllib包的网络请求教程
2022/04/19 Python
MySQL常用慢查询分析工具详解
2022/08/14 MySQL