基于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伪静态页面函数附使用方法
Jun 20 PHP
优化php效率,提高php性能的一些方法
Mar 24 PHP
php读取EXCEL文件 php excelreader读取excel文件
Dec 06 PHP
处理(php-cgi.exe - FastCGI 进程超过了配置的请求超时时限)的问题
Jul 03 PHP
ThinkPHP3.1新特性之G方法的使用
Jun 19 PHP
php格式化日期实例分析
Nov 12 PHP
php封装的图片(缩略图)处理类完整实例
Oct 19 PHP
PHP receiveMail实现收邮件功能
Apr 25 PHP
php7函数,声明,返回值等新特性介绍
May 25 PHP
laravel5使用freetds连接sql server的方法
Dec 07 PHP
PHP自动载入类文件函数__autoload的使用方法
Mar 25 PHP
aec加密 php_php aes加密解密类(兼容php5、php7)
Mar 14 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
全国FM电台频率大全 - 10 江苏省
2020/03/11 无线电
PHP 将dataurl转成图片image方法总结
2016/10/14 PHP
php封装json通信接口详解及实例
2017/03/07 PHP
php web环境和命令行环境下查找php.ini的位置
2019/07/17 PHP
用js实现预览待上传的本地图片
2007/03/15 Javascript
jQuery中;function($,undefined) 前面的分号的用处
2014/12/17 Javascript
jquery使用remove()方法删除指定class子元素
2015/03/26 Javascript
javascript如何实现暂停功能
2015/11/06 Javascript
Vuejs第八篇之Vuejs组件的定义实例解析
2016/09/05 Javascript
jquery动态赋值id与动态取id方法示例
2017/08/21 jQuery
JS实现十字坐标跟随鼠标效果
2017/12/25 Javascript
在 webpack 中使用 ECharts的实例详解
2018/02/05 Javascript
vue-cli中的babel配置文件.babelrc实例详解
2018/02/22 Javascript
Angular 组件之间的交互的示例代码
2018/03/24 Javascript
vue中的数据绑定原理的实现
2018/07/02 Javascript
微信公众号生成新浪短网址的实现(快速生成)
2019/08/18 Javascript
解决vue组件销毁之后计时器继续执行的问题
2020/07/21 Javascript
[03:42]2014DOTA2西雅图国际邀请赛 Navi战队巡礼
2014/07/07 DOTA
[01:02:53]DOTA2上海特级锦标赛主赛事日 - 5 总决赛Liquid VS Secret第二局
2016/03/06 DOTA
pyqt5 禁止窗口最大化和禁止窗口拉伸的方法
2019/06/18 Python
弄懂这56个Python使用技巧(轻松掌握Python高效开发)
2019/09/18 Python
解决jupyter notebook显示不全出现框框或者乱码问题
2020/04/09 Python
python实现mean-shift聚类算法
2020/06/10 Python
Python TestSuite生成测试报告过程解析
2020/07/23 Python
PyCharm2019.3永久激活破解详细图文教程,亲测可用(不定期更新)
2020/10/29 Python
Python 2.6.6升级到Python2.7.15的详细步骤
2020/12/14 Python
架构师岗位职责
2013/11/18 职场文书
领导证婚人证婚词
2014/01/13 职场文书
助人为乐表扬信范文
2014/01/14 职场文书
幼儿园美术教学反思
2014/01/31 职场文书
奉献爱心演讲稿
2014/09/04 职场文书
师德师风学习材料
2014/12/19 职场文书
钱塘江大潮导游词
2015/02/03 职场文书
盗窃罪辩护词范文
2015/05/21 职场文书
手写实现JS中的new
2021/11/07 Javascript
使用 Koa + TS + ESLlint 搭建node服务器的过程详解
2022/05/30 NodeJs