基于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中调用ASP.NET的WebService的代码
Apr 22 PHP
PHP判断文件是否存在、是否可读、目录是否存在的代码
Oct 03 PHP
在PHP上显示JFreechart画的统计图方法
Nov 03 PHP
Windows和Linux中php代码调试工具Xdebug的安装与配置详解
May 08 PHP
php 参数过滤、数据过滤详解
Oct 26 PHP
WordPress中查询文章的循环Loop结构及用法分析
Dec 17 PHP
laravel中的错误与日志用法详解
Jul 26 PHP
如何使用php等比例缩放图片
Oct 12 PHP
php遍历替换目录下文件指定内容的方法
Nov 10 PHP
PHP运用foreach神奇的转换数组(实例讲解)
Feb 01 PHP
thinkphp5框架扩展redis类方法示例
May 06 PHP
PHP进阶学习之命名空间基本用法分析
Jun 18 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对大文件进行读取操作的实现代码
2013/01/23 PHP
php实现的替换敏感字符串类实例
2014/09/22 PHP
PHP面向对象程序设计之对象生成方法详解
2016/12/02 PHP
javascript下string.format函数补充
2010/08/24 Javascript
nodejs入门详解(多篇文章结合)
2012/03/07 NodeJs
JavaScript高级程序设计 阅读笔记(十八) js跨平台的事件
2012/08/14 Javascript
Knockout visible绑定使用方法
2013/11/15 Javascript
探讨jQuery的ajax使用场景(c#)
2013/12/03 Javascript
调用innerHTML之后onclick失效问题的解决方法
2014/01/28 Javascript
javascript 用函数实现继承详解
2016/05/28 Javascript
使用Vue.js和Element-UI做一个简单登录页面的实例
2018/02/23 Javascript
iview table render集成switch开关的实例
2018/03/14 Javascript
Vue中的无限加载vue-infinite-loading的方法
2018/04/08 Javascript
vue与原生app的对接交互的方法(混合开发)
2018/11/28 Javascript
JavaScript遍历数组的方法代码实例
2020/01/14 Javascript
在Python的web框架中编写创建日志的程序的教程
2015/04/30 Python
Python学习思维导图(必看篇)
2017/06/26 Python
Python入门之三角函数tan()函数实例详解
2017/11/08 Python
python 执行文件时额外参数获取的实例
2018/12/18 Python
对python_discover方法遍历所有执行的用例详解
2019/02/13 Python
为什么你还不懂得怎么使用Python协程
2019/05/13 Python
学习和使用python的13个理由
2019/07/30 Python
TensorFlow tensor的拼接实例
2020/01/19 Python
将tensorflow模型打包成PB文件及PB文件读取方式
2020/01/23 Python
Python requests模块基础使用方法实例及高级应用(自动登陆,抓取网页源码)实例详解
2020/02/14 Python
python中最小二乘法详细讲解
2021/02/19 Python
html5服务器推送_动力节点Java学院整理
2017/07/12 HTML / CSS
Omio葡萄牙:全欧洲低价大巴、火车和航班搜索和比价
2019/02/09 全球购物
竞选班干部演讲稿
2014/04/24 职场文书
班级文化标语
2014/06/23 职场文书
小学生推普周国旗下讲话稿
2014/09/21 职场文书
幼儿园卫生保健制度
2015/08/05 职场文书
装修安全责任协议书
2016/03/22 职场文书
2016年第十四个公民道德宣传日活动总
2016/04/01 职场文书
世界无敌的ICOM IC-R9500宽频接收机
2022/03/25 无线电
Linux、ubuntu系统下查看显卡型号、显卡信息详解
2022/04/07 Servers