基于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 mssql 日期出现中文字符的解决方法
Mar 10 PHP
PHP 事务处理数据实现代码
May 13 PHP
php和数据库结合的一个简单的web实例 代码分析 (php初学者)
Jul 28 PHP
不使用php api函数实现数组的交换排序示例
Apr 13 PHP
PHP整数取余返回负数的相关解决方法
May 15 PHP
全面解读PHP的Yii框架中的日志功能
Mar 17 PHP
php实现等比例不失真缩放上传图片的方法
Nov 14 PHP
Yii2中datetime类的使用
Dec 17 PHP
thinkPHP5实现数据库添加内容的方法
Oct 25 PHP
TP5(thinkPHP框架)实现后台清除缓存功能示例
May 29 PHP
PHPExcel实现的读取多工作表操作示例
Apr 14 PHP
基于thinkphp5框架实现微信小程序支付 退款 订单查询 退款查询操作
Aug 17 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 Token(令牌)设计
2008/03/15 PHP
php 什么是PEAR?(第二篇)
2009/03/19 PHP
PHP和.net中des加解密的实现方法
2013/02/27 PHP
利用php获取服务器时间的实现代码
2013/06/07 PHP
php闭包中使用use声明变量的作用域实例分析
2018/08/09 PHP
javascript之AJAX框架使用说明
2010/04/24 Javascript
Javascript this 的一些学习总结
2012/08/02 Javascript
jQuery CSS()方法改变现有的CSS样式表
2014/09/09 Javascript
JavaScript中的依赖注入详解
2015/03/18 Javascript
学习javascript面向对象 理解javascript对象
2016/01/04 Javascript
基于jQuery实现歌词滚动版音乐播放器的代码
2016/09/17 Javascript
Vue.js tab实现选项卡切换
2017/05/16 Javascript
Vue2.0 多 Tab切换组件的封装实例
2017/07/28 Javascript
基于Datatables跳转到指定页的简单实例
2017/11/09 Javascript
AngularJS select加载数据选中默认值的方法
2018/02/28 Javascript
详解vue中localStorage的使用方法
2018/11/22 Javascript
Node+OCR实现图像文字识别功能
2018/11/26 Javascript
JS时间戳与日期格式互相转换的简单方法示例
2021/01/30 Javascript
Python实现全局变量的两个解决方法
2014/07/03 Python
Django自定义manage命令实例代码
2018/02/11 Python
用OpenCV将视频分解成单帧图片,图片合成视频示例
2019/12/10 Python
爬虫代理池Python3WebSpider源代码测试过程解析
2019/12/20 Python
使用python的pyplot绘制函数实例
2020/02/13 Python
python实现图片横向和纵向拼接
2020/03/05 Python
盛大笔试题
2016/11/05 面试题
中国央视网签名寄语
2014/01/18 职场文书
自我鉴定注意事项
2014/01/19 职场文书
一份创业计划书范文
2014/02/08 职场文书
英语求职信范文
2014/05/23 职场文书
作风建设剖析材料
2014/10/06 职场文书
2014年计划生育协会工作总结
2014/11/14 职场文书
小学班主任事迹材料
2014/12/17 职场文书
2015年医药代表工作总结
2015/04/25 职场文书
单方投资意向书
2015/05/11 职场文书
python基础之爬虫入门
2021/05/10 Python
Opencv实现二维直方图的计算及绘制
2021/07/21 Python