基于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 11 PHP
晋城吧对DiscuzX进行的前端优化要点
Sep 05 PHP
php注销代码(session注销)
May 31 PHP
PHP rawurlencode与urlencode函数的深入分析
Jun 08 PHP
5种PHP创建数组的实例代码分享
Jan 17 PHP
Zend Framework教程之Application用法实例详解
Mar 14 PHP
浅析PHP中的i++与++i的区别及效率
Jun 15 PHP
php实现的简单数据库操作Model类
Nov 16 PHP
PHP封装的PDO数据库操作类实例
Jun 21 PHP
php对微信支付回调处理的方法
Aug 23 PHP
php中的钩子理解及应用实例分析
Aug 30 PHP
php生成随机数/生成随机字符串的方法小结【5种方法】
May 27 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 session会话的安全性分析
2011/09/08 PHP
php中利用explode函数分割字符串到数组
2014/02/08 PHP
表单提交错误后返回内容消失问题的解决方法(PHP网站)
2015/10/20 PHP
Zend Framework教程之Zend_Layout布局助手详解
2016/03/04 PHP
jquery的ajax请求全面了解
2013/03/20 Javascript
jquery禁止输入数字以外的字符的示例(纯数字验证码)
2014/04/10 Javascript
nodejs开发环境配置与使用
2014/11/17 NodeJs
JavaScript实现带缓冲效果的随屏滚动漂浮广告代码
2015/11/06 Javascript
jquery遍历json对象集合详解
2016/05/18 Javascript
gulp-htmlmin压缩html的gulp插件实例代码
2016/06/06 Javascript
jQuery筛选数组之grep、each、inArray、map的用法及遍历json对象
2016/06/20 Javascript
jQuery制作网页版选项卡
2016/07/28 Javascript
详解自动生成博客目录案例
2016/12/09 Javascript
js实现文字列表无缝滚动效果
2017/06/23 Javascript
jquery实现楼层滚动效果
2018/01/01 jQuery
详解JavaScript实现动态的轮播图效果
2019/04/29 Javascript
在vue项目中使用codemirror插件实现代码编辑器功能
2019/08/27 Javascript
vue 框架下自定义滚动条(easyscroll)实现方法
2019/08/29 Javascript
js实现自动播放匀速轮播图
2020/02/06 Javascript
package.json各个属性说明详解
2020/03/11 Javascript
Python中的多重装饰器
2015/04/11 Python
简单谈谈python中的Queue与多进程
2016/08/25 Python
Python3操作SQL Server数据库(实例讲解)
2017/10/21 Python
Python实现程序判断季节的代码示例
2019/01/28 Python
python+pyqt5编写md5生成器
2019/03/18 Python
CSS3 实现倒计时效果
2020/11/25 HTML / CSS
阿里巴巴美国:Alibaba美国
2019/11/24 全球购物
JACK & JONES荷兰官网:男士服装和鞋子
2021/03/07 全球购物
水务局局长岗位职责
2013/11/28 职场文书
水毁工程实施方案
2014/04/01 职场文书
奥巴马英文演讲稿
2014/05/15 职场文书
体现团队精神的口号
2014/06/06 职场文书
专业技术职务聘任证明
2015/03/02 职场文书
机关工会工作总结2015
2015/05/26 职场文书
Python中生成随机数据安全性、多功能性、用途和速度方面进行比较
2022/04/14 Python
python+pyhyper实现识别图片中的车牌号思路详解
2022/12/24 Python