基于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五种设计模式小结
Mar 23 PHP
PHP_NETWORK_GETADDRESSES: GETADDRINFO FAILED问题解决办法
May 04 PHP
PHP数据库万能引擎类adodb配置使用以及实例集锦
Jun 12 PHP
PHP闭包实例解析
Sep 08 PHP
php表单提交与$_POST实例分析
Jan 26 PHP
php自动加载方式集合
Apr 04 PHP
Yii使用DeleteAll连表删除出现报错问题的解决方法
Jul 14 PHP
Yii中的cookie的发送和读取
Jul 27 PHP
利用php + Laravel如何实现部署自动化详解
Oct 11 PHP
浅谈PHP中如何实现Hook机制
Nov 14 PHP
PHP常用的类封装小结【4个工具类】
Jun 28 PHP
tp5.1 框架数据库高级查询技巧实例总结
May 25 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中break及continue两个流程控制指令区别分析
2011/04/18 PHP
php 大数据量及海量数据处理算法总结
2011/05/07 PHP
PHP连接操作access数据库实例
2015/03/30 PHP
如何使用php实现评委评分器
2015/07/31 PHP
PHP简单获取上月、本月、近15天、近30天的方法示例
2017/07/03 PHP
Javascript技术技巧大全(五)
2007/01/22 Javascript
JavaScript 应用技巧集合[推荐]
2009/08/30 Javascript
JavaScript中如何通过arguments对象实现对象的重载
2014/05/12 Javascript
微信小程序-详解数据缓存
2016/11/24 Javascript
web打印小结
2017/01/11 Javascript
详解Angular.js指令中scope类型的几种特殊情况
2017/02/21 Javascript
angular4模块中给标签添加背景图的实现方法
2017/09/15 Javascript
vue-cli开发环境实现跨域请求的方法
2018/04/07 Javascript
Vue一次性简洁明了引入所有公共组件的方法
2018/11/28 Javascript
VUE异步更新DOM - 用$nextTick解决DOM视图的问题
2020/11/06 Javascript
python 字符串split的用法分享
2013/03/23 Python
简介Python中用于处理字符串的center()方法
2015/05/18 Python
python的paramiko模块实现远程控制和传输示例
2017/10/13 Python
在python中按照特定顺序访问字典的方法详解
2018/12/14 Python
Python中时间datetime的处理与转换用法总结
2019/02/18 Python
Python3多线程基础知识点
2019/02/19 Python
python通过SSH登陆linux并操作的实现
2019/10/10 Python
Django项目使用ckeditor详解(不使用admin)
2019/12/17 Python
Django 404、500页面全局配置知识点详解
2020/03/10 Python
Python 实现二叉查找树的示例代码
2020/12/21 Python
使用 css3 transform 属性来变换背景图的方法
2019/05/07 HTML / CSS
美国紧身牛仔裤品牌:NYDJ
2017/05/24 全球购物
日本动漫周边服饰销售网站:Atsuko
2019/12/16 全球购物
百度软件工程师职位
2013/02/14 面试题
医药营销专业个人自荐信
2013/09/29 职场文书
公务员平时考核实施方案
2014/03/11 职场文书
公务员保密承诺书
2014/03/27 职场文书
县级文明单位申报材料
2014/05/23 职场文书
商务经理岗位职责
2014/07/30 职场文书
mysql分表之后如何平滑上线详解
2021/11/01 MySQL
Python 数据可视化工具 Pyecharts 安装及应用
2022/04/20 Python