基于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 相关文章推荐
图书管理程序(三)
Oct 09 PHP
php cookie 登录验证示例代码
Mar 16 PHP
PHP 采集获取指定网址的内容
Jan 05 PHP
ThinkPHP之foreach标签使用概述
Jun 30 PHP
PHP中文乱码解决方案
Mar 05 PHP
php命令行(cli)模式下报require 加载路径错误的解决方法
Nov 23 PHP
php HTML无刷新提交表单
Apr 05 PHP
PHP全功能无变形图片裁剪操作类与用法示例
Jan 10 PHP
PHP实现找出链表中环的入口节点
Jan 16 PHP
PHP排序算法之基数排序(Radix Sort)实例详解
Apr 21 PHP
阿里云的WindowsServer2016上部署php+apache
Jul 17 PHP
PhpStorm连接服务器并实现自动上传功能
Dec 09 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常用的三种设计模式
2017/02/17 PHP
静态页面的值传递(三部曲)
2006/09/25 Javascript
ie和firefox不兼容的解决方法集合
2009/04/28 Javascript
JavaScript 学习笔记(七)字符串的连接
2009/12/31 Javascript
JS DOM 操作实现代码
2010/08/01 Javascript
在多个页面使用同一个HTML片段的代码
2011/03/04 Javascript
js获取当前日期代码适用于网页头部
2013/06/27 Javascript
js/html光标定位的实现代码
2013/09/23 Javascript
为指定的元素添加遮罩层的示例代码
2014/01/15 Javascript
javascript的alert box在java中如何显示多行
2014/05/18 Javascript
jquery中post方法用法实例
2014/10/21 Javascript
jQuery焦点图轮播特效代码分享(3款)
2015/09/05 Javascript
jQuery中通过ajax调用webservice传递数组参数的问题实例详解
2016/05/20 Javascript
AngularJS基于factory创建自定义服务的方法详解
2017/05/25 Javascript
详解easyui基于 layui.laydate日期扩展组件
2018/07/18 Javascript
Vue 实现手动刷新组件的方法
2019/02/19 Javascript
Javascript实现html转pdf高清版(提高分辨率)
2020/02/19 Javascript
Vue computed 计算属性代码实例
2020/04/22 Javascript
[04:09]2014DOTA2国际邀请赛Ti西雅图 历届冠军相继出局 BBC综述今日比赛
2014/07/20 DOTA
python的绘图工具matplotlib使用实例
2014/07/03 Python
Python实现测试磁盘性能的方法
2015/03/12 Python
Python运维之获取系统CPU信息的实现方法
2018/06/11 Python
对Pandas MultiIndex(多重索引)详解
2018/11/16 Python
HTML5在线预览PDF的示例代码
2017/09/14 HTML / CSS
Canvas globalCompositeOperation
2018/12/18 HTML / CSS
Uber Eats台湾:寻找附近提供送餐服务的餐厅
2018/05/07 全球购物
为什么在使用动态 SQL 语句时必须为低层数据库对象授予权限
2012/12/13 面试题
当文件系统受到破坏时,如何检查和修复系统?
2012/03/09 面试题
诚信承诺书范文
2014/03/27 职场文书
公证书标准格式
2014/04/10 职场文书
工作会议方案
2014/05/21 职场文书
财务稽核岗位职责
2015/04/13 职场文书
2015年幼师个人工作总结
2015/10/15 职场文书
《鲸》教学反思
2016/02/23 职场文书
致男子1500米运动员的广播稿
2019/11/08 职场文书
7个你应该知道的JS原生错误类型
2021/04/29 Javascript