基于PHP实现解密或加密Cloudflar邮箱保护

所属分类: 网络编程 / PHP编程 阅读数: 1537
收藏 0 赞 0 分享

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;
}

我们就能利用这个加密算法,将手机号、邮箱地址、身份证等各种敏感的信息都加密起来,防止别人能轻易的抓取到数据

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

更多精彩内容其他人还在看

CI框架实现创建自定义类库的方法

这篇文章主要介绍了CI框架实现创建自定义类库的方法,结合实例形式分析了CI框架创建自定义类库的相关原理、步骤、实现方法与操作注意事项,需要的朋友可以参考下
收藏 0 赞 0 分享

Yii2.0 RESTful API 基础配置教程详解

这篇文章主要介绍了Yii2.0 RESTful API 基础配置教程,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
收藏 0 赞 0 分享

CI框架附属类用法分析

这篇文章主要介绍了CI框架附属类用法,结合实例形式分析了CI框架附属类相关资源访问操作技巧,需要的朋友可以参考下
收藏 0 赞 0 分享

CI框架网页缓存简单用法分析

这篇文章主要介绍了CI框架网页缓存简单用法,结合实例形式分析了CI框架网页缓存的原理,以及开启缓存、删除缓存等操作技巧,需要的朋友可以参考下
收藏 0 赞 0 分享

php实现的PDO异常处理操作分析

这篇文章主要介绍了php实现的PDO异常处理操作,结合实例形式分析了pdo异常处理的相关原理、用法及操作注意事项,需要的朋友可以参考下
收藏 0 赞 0 分享

php PDO属性设置与操作方法分析

这篇文章主要介绍了php PDO属性设置与操作方法,结合实例形式分析了php pdo常见属性功能及相关的设置、获取操作技巧,需要的朋友可以参考下
收藏 0 赞 0 分享

PHP抽象类基本用法示例

这篇文章主要介绍了PHP抽象类基本用法,结合实例形式分析了php抽象类的概念、原理、定义、使用方法及相关操作注意事项,代码注释包含较为详尽的说明信息,需要的朋友可以参考下
收藏 0 赞 0 分享

PHP面向对象程序设计继承用法简单示例

这篇文章主要介绍了PHP面向对象程序设计继承用法,结合具体实例形式分析了php面向对象程序设计中继承的相关概念、原理、使用技巧与相关操作注意事项,需要的朋友可以参考下
收藏 0 赞 0 分享

PHP实现函数内修改外部变量值的方法示例

这篇文章主要介绍了PHP实现函数内修改外部变量值的方法,涉及php全局变量、传值调用、引用等相关操作技巧,需要的朋友可以参考下
收藏 0 赞 0 分享

PHP命名空间简单用法示例

这篇文章主要介绍了PHP命名空间简单用法,结合具体实例形式分析了php命名空间的简单定义与使用相关操作技巧,需要的朋友可以参考下
收藏 0 赞 0 分享
查看更多