基于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 生成饼图 三维饼图
Sep 28 PHP
PHP 用数组降低程序的时间复杂度
Dec 04 PHP
php 操作excel文件的方法小结
Dec 31 PHP
php数组函数序列之array_search()- 按元素值返回键名
Nov 04 PHP
30个php操作redis常用方法代码例子
Jul 05 PHP
php输入数据统一类实例
Feb 23 PHP
PHP 数据结构队列(SplQueue)和优先队列(SplPriorityQueue)简单使用实例
May 12 PHP
如何把php5.3版本升级到php5.4或者php5.5
Jul 31 PHP
WordPress中使主题支持小工具以及添加插件启用函数
Dec 22 PHP
深入浅析Yii admin的权限控制
Aug 31 PHP
PHP实现对图片的反色处理功能【测试可用】
Feb 01 PHP
PHP按一定比例压缩图片的方法
Oct 12 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防注入安全代码
2008/04/09 PHP
php实现的简单压缩英文字符串的代码
2008/04/24 PHP
php下用cookie统计用户访问网页次数的代码
2010/05/09 PHP
jquery+php+ajax显示上传进度的多图片上传并生成缩略图代码
2014/10/15 PHP
使用PHP生成二维码的方法汇总
2015/07/22 PHP
PHP生成各种常见验证码和Ajax验证过程
2016/01/10 PHP
PHP 接入微信扫码支付总结(总结篇)
2016/11/03 PHP
PHP巧妙利用位运算实现网站权限管理的方法
2017/03/12 PHP
JS实现打开本地文件或文件夹
2021/03/09 Javascript
[原创]后缀就扩展名为js的文件是什么文件
2007/12/06 Javascript
JQuery给网页更换皮肤的方法
2015/05/30 Javascript
jquery简单实现幻灯片的方法
2015/08/03 Javascript
vue项目使用$router.go(-1)返回时刷新原来的界面操作
2020/07/26 Javascript
[39:11]DOTA2上海特级锦标赛C组资格赛#2 LGD VS Newbee第二局
2016/02/28 DOTA
跟老齐学Python之一个免费的实验室
2014/09/14 Python
Python文件的读写和异常代码示例
2017/10/31 Python
Python 使用with上下文实现计时功能
2018/03/09 Python
python通过配置文件共享全局变量的实例
2019/01/11 Python
PyTorch中常用的激活函数的方法示例
2019/08/20 Python
python实现多进程按序号批量修改文件名的方法示例
2019/12/30 Python
解决python Jupyter不能导入外部包问题
2020/04/15 Python
python自定义函数def的应用详解
2020/06/03 Python
pytorch掉坑记录:model.eval的作用说明
2020/06/23 Python
浅谈Keras参数 input_shape、input_dim和input_length用法
2020/06/29 Python
基于Python实现下载网易音乐代码实例
2020/08/10 Python
10张动图学会python循环与递归问题
2021/02/06 Python
阿里巴巴国际站:Alibaba.com
2016/07/21 全球购物
建筑人员岗位职责
2013/12/25 职场文书
暑期培训随笔感言
2014/03/10 职场文书
爱心倡议书范文
2014/05/12 职场文书
农村党支部书记四风问题个人对照检查材料
2014/09/21 职场文书
夫妻分居协议书范本
2014/11/28 职场文书
创建文明城市倡议书
2015/04/28 职场文书
工作态度恶劣检讨书
2015/05/06 职场文书
辞职信怎么写?
2019/05/21 职场文书
单身狗福利?Python爬取某婚恋网征婚数据
2021/06/03 Python