基于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实现jQuery扩展函数
Oct 30 PHP
php获取mysql数据库中的所有表名的代码
Apr 23 PHP
Trying to clone an uncloneable object of class Imagic的解决方法
Jan 11 PHP
探讨PHP删除文件夹的三种方法
Jun 09 PHP
Symfony2安装第三方Bundles实例详解
Feb 04 PHP
PHP函数import_request_variables()用法分析
Apr 02 PHP
yii2.0整合阿里云oss上传单个文件的示例
Sep 19 PHP
PHP获取数据库表中的数据插入新的表再原删除数据方法
Oct 12 PHP
PHP中ltrim()函数的用法与实例讲解
Mar 28 PHP
微信推送功能实现方式图文详解
Jul 12 PHP
通过PHP的Wrapper无缝迁移原有项目到新服务的实现方法
Apr 02 PHP
laravel入门知识点整理
Sep 15 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
提示Trying to clone an uncloneable object of class Imagic的解决
2011/10/27 PHP
php封装json通信接口详解及实例
2017/03/07 PHP
PHP 实现重载
2021/03/09 PHP
Javascript 判断客户端浏览器类型代码
2010/03/01 Javascript
IE8下关于querySelectorAll()的问题
2010/05/13 Javascript
一个简单的Node.js异步操作管理器分享
2014/04/29 Javascript
JavaScript中实现单体模式分享
2015/01/29 Javascript
JavaScript数组对象赋值用法实例
2015/08/04 Javascript
jquery.validate提示错误信息位置方法
2016/01/22 Javascript
三分钟带你玩转jQuery.noConflict()
2016/02/15 Javascript
js实现可控制左右方向的无缝滚动效果
2016/05/29 Javascript
浅谈AngularJs指令之scope属性详解
2016/10/24 Javascript
简单实现Vue的observer和watcher
2016/12/21 Javascript
Bootstrap警告(Alerts)的实现方法
2017/03/22 Javascript
使用ECharts实现状态区间图
2018/10/25 Javascript
layui输入框只允许输入中文且判断长度的例子
2019/09/18 Javascript
原生javascript实现类似vue的数据绑定功能示例【观察者模式】
2020/02/24 Javascript
[46:00]DOTA2上海特级锦标赛主赛事日 - 2 胜者组第一轮#4EG VS Fnatic第一局
2016/03/03 DOTA
[01:04:14]VP vs TNC 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/20 DOTA
Python入门_浅谈数据结构的4种基本类型
2017/05/16 Python
使用Eclipse如何开发python脚本
2018/04/11 Python
python 字典操作提取key,value的方法
2019/06/26 Python
python ctypes库2_指定参数类型和返回类型详解
2019/11/19 Python
Python ORM编程基础示例
2020/02/02 Python
自荐书格式
2013/12/01 职场文书
甜点店创业计划书
2014/01/27 职场文书
高校教师自荐信范文
2014/03/13 职场文书
班风口号
2014/06/18 职场文书
师范类求职信
2014/06/21 职场文书
体育系毕业生自荐信
2014/06/28 职场文书
员工自我评价范文
2015/03/11 职场文书
孟佩杰观后感
2015/06/17 职场文书
Django程序的优化技巧
2021/04/29 Python
Python基础之条件语句详解
2021/06/16 Python
解决springboot druid数据库连接失败后一直重连的方法
2022/04/19 Java/Android