基于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 相关文章推荐
什么是MVC,好东西啊
May 03 PHP
php is_file()和is_dir()用于遍历目录时用法注意事项
Mar 02 PHP
PHP文件读写操作之文件写入代码
Jan 13 PHP
php中用于检测一个地理IP地址是否可用的代码
Feb 19 PHP
php导入导出excel实例
Oct 25 PHP
php像数组一样存取和修改字符串字符
Mar 21 PHP
ubuntu下配置nginx+php+mysql详解
Sep 10 PHP
PHP判断表达式中括号是否匹配的简单实例
Oct 22 PHP
完美解决在ThinkPHP控制器中命名空间的问题
May 05 PHP
PHP编程文件处理类SplFileObject和SplFileInfo用法实例分析
Jul 22 PHP
php中各种定义变量的方法小结
Oct 18 PHP
php 后端实现JWT认证方法示例
Sep 04 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在服务器执行exec命令失败的解决方法
2012/03/03 PHP
php自定义session示例分享
2014/04/22 PHP
PHP面向对象自动加载机制原理与用法分析
2016/10/14 PHP
PHP判断数组是否为空的常用方法(五种方法)
2017/02/08 PHP
JS等比例缩小图片尺寸的实例
2013/02/27 Javascript
jQuery获取单击节点对象的方法
2016/06/02 Javascript
详解JS几种变量交换方式以及性能分析对比
2016/11/25 Javascript
利用浮层使select不可选的实现方法
2016/12/03 Javascript
angularJs中$http获取后台数据的实例讲解
2018/08/08 Javascript
详解搭建es6+devServer简单开发环境
2018/09/25 Javascript
webpack中如何加载静态文件的方法步骤
2019/05/18 Javascript
关于layui 实现点击按钮添加一行(方法渲染创建的table)
2019/09/29 Javascript
解决Vue 移动端点击出现300毫秒延迟的问题
2020/07/21 Javascript
如何在JavaScript中使用localStorage详情
2021/02/04 Javascript
[44:10]2018DOTA2亚洲邀请赛 4.5 淘汰赛 EG vs VP 第一场
2018/04/06 DOTA
介绍Python中几个常用的类方法
2015/04/08 Python
python实现用于测试网站访问速率的方法
2015/05/26 Python
python基于xmlrpc实现二进制文件传输的方法
2015/06/02 Python
浅析Python的Django框架中的Memcached
2015/07/23 Python
python opencv之分水岭算法示例
2018/02/24 Python
TensorFlow实现卷积神经网络
2018/05/24 Python
python pandas实现excel转为html格式的方法
2018/10/23 Python
Python采集猫眼两万条数据 对《无名之辈》影评进行分析
2018/12/05 Python
Django对接支付宝实现支付宝充值金币功能示例
2019/12/17 Python
Selenium python时间控件输入问题解决方案
2020/07/22 Python
乌克兰电子和家用电器商店:Foxtrot
2019/07/23 全球购物
阿姆斯特丹城市卡:Amsterdam Pass
2019/12/01 全球购物
俄罗斯厨房产品购物网站:COOK HOUSE
2021/03/15 全球购物
警察思想汇报
2014/01/04 职场文书
创建精神文明单位实施方案
2014/03/08 职场文书
法学专业毕业生自荐信
2014/06/11 职场文书
股指期货心得体会
2014/09/10 职场文书
总经理聘用协议书
2015/09/21 职场文书
2016年师德学习心得体会
2016/01/12 职场文书
使用pytorch实现线性回归
2021/04/11 Python
Python 如何实现文件自动去重
2021/06/02 Python