基于PHP实现解密或加密Cloudflar邮箱保护
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; }
我们就能利用这个加密算法,将手机号、邮箱地址、身份证等各种敏感的信息都加密起来,防止别人能轻易的抓取到数据
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。
相关推荐
-
Js通过AES加密后PHP用Openssl解密的方法
前言 最近遇到的几个网站在提交密码时提交的已经是密文,也就是说在网络上传输的密码是密文,这样提升了密码在网络传输中的安全性. 后端语言加解密已经有很成熟的方案了,前端的话Google之前出过一个crypto-js,为浏览器的js提供了加解密方案.今天一起来了解一下基于AES的前后端加解密流程. Javascript 1.安装npm包 npm install crypto-js 2.加密代码 const CryptoJS = require("crypto-js"); const key
-
PHP实现基于3DES算法加密解密字符串示例
本文实例讲述了PHP实现基于3DES算法加密解密字符串.分享给大家供大家参考,具体如下: 3DES(或称为Triple DES)是三重数据加密算法(TDEA,Triple Data Encryption Algorithm)块密码的通称.它相当于是对每个数据块应用三次DES加密算法.由于计算机运算能力的增强,原版DES密码的密钥长度变得容易被暴力破解:3DES即是设计用来提供一种相对简单的方法,即通过增加DES的密钥长度来避免类似的攻击,而不是设计一种全新的块密码算法. 项目地址:https:/
-
PHP实现的AES加密、解密封装类与用法示例
本文实例讲述了PHP实现的AES加密.解密封装类与用法.分享给大家供大家参考,具体如下: <?php /** * Class AES * 用于AES加解密数据 * time:2018-04-27 */ class AES { protected $cipher = MCRYPT_RIJNDAEL_256; //AES加密算法 protected $mode = MCRYPT_MODE_CBC; //采用cbc加密模式 protected $key; //密钥 protected $iv; //c
-
Python爬虫如何应对Cloudflare邮箱加密
最近写一个小爬虫,需要拿到邮箱信息,发现拿不到,也不是ajax接口.最后查资料发现是被Cloudflare加密起来了,有加密肯定有解密. 参考大佬的原话搞起来就好: 柠之漠然: 这个解密方式就是从那段 js 代码转换过来的 其中最主要的一句话 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(1
-
php实现的rc4加密解密类定义与用法示例
本文实例讲述了php实现的rc4加密解密类.分享给大家供大家参考,具体如下: class.rc4crypt.php文件: <?php /* * By julying.com */ define('CRYPT_RC4_MODE_INTERNAL', 1); define('CRYPT_RC4_MODE_MCRYPT', 2); define('CRYPT_RC4_ENCRYPT', 0); define('CRYPT_RC4_DECRYPT', 1); class Crypt_RC4 { /**
-
PHP 7.1中利用OpenSSL代替Mcrypt加解密的方法详解
概要: php7.1发布后新特性吸引了不少PHPer,大家都在讨论新特性带来的好处与便利.但是从php7.0 升级到 php7.1 废弃(过时)了一个在过去普遍应用的扩展(mcrypt扩展).官方提供了相应的解决提示,却没有提供更详细的解决办法.于是坑来了: 今天在使用微信开放平台对接一个内容管理系统的时候,在绑定公众号的时候一直失败 原因: 调试的时候发现,直接原因是因为开放平台里面填写的授权事件(该授权事件每十分钟会通送一次事件来更新ticket),即: 这个地方填写的url,调试发现,这个
-
PHP实现的AES双向加密解密功能示例【128位】
本文实例讲述了PHP实现的AES双向加密解密功能.分享给大家供大家参考,具体如下: <?php /* * Created on 2018-9-1 * * To change the template for this generated file go to * Window - Preferences - PHPeclipse - PHP - Code Templates */ /** 用法: Security::encrypt($str,$key); Security::decrypt($s
-
PowerShell小技巧之调用CloudFlare的SDK查询网站统计信息
CloudFlare是举世闻名的CDN服务商,其免费套餐也足以满足普通用户.优化网站加载速度,缓存静态资源,分地域进行内容就近分发,抵御Ddos攻击.总之,很好,很厚道.但是在天朝许多结点被封,本身的DNS被封,和谷歌与FB一样,同是天涯沦落人(其实我们自己才是). 我在查看CloudFlare的SDK时,发现支持Windows平台支持Invoke-WebRequest,也就是PowerShell,就试着调用了下,果然可以. 比如查询网站的统计信息: $body = @{ a = 'stats'
-
升级 PHP7.1 后 openssl 解密 mcrypt AES 数据不兼容问题的处理方法
这是一个创建于 374 天前的主题,其中的信息可能已经有所发展或是发生改变. $key = "01234567891234560123456789123456"; $iv = "0123456789123456"; //原本的 mcrypt 加密 $en_data = base64_encode(mcrypt_encrypt(MCRYPT_RIJNDAEL_128, $key, "0123456789123456", MCRYPT_MODE_CB
-
基于PHP实现解密或加密Cloudflar邮箱保护
Cloudflare 有一项功能挺不错的,就是将页面上所有的邮箱地址都加密起来,防止机器人抓到然后干坏事. 这项功能要在后台开启 email address obfuscation 之后就可以在页面上加入一个邮箱地址,比如说 abc@abc.com 查看源代码就能发现类似如下的代码 <a class="__cf_email__" data-cfemail="30515253705152531e535f5d" href="/cdn-cgi/l/emai
-
Python基于pycrypto实现的AES加密和解密算法示例
本文实例讲述了Python基于pycrypto实现的AES加密和解密算法.分享给大家供大家参考,具体如下: 一 代码 # -*- coding: UTF-8 -*- import string import random from Crypto.Cipher import AES def keyGenerater(length): '''''生成指定长度的秘钥''' if length not in (16, 24, 32): return None x = string.ascii_lette
-
Python如何基于rsa模块实现非对称加密与解密
这篇文章主要介绍了Python如何基于rsa模块实现非对称加密与解密,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 1.简单介绍: RSA加密算法是一种非对称加密算法 是由已知加密密钥推导出解密密钥在计算上是不可行的"密码体制.加密密钥(即公开密钥)PK是公开信息,而解密密钥(即秘密密钥)SK是需要保密的. RSA密钥至少为500位长,一般推荐使用1024位.RSA密钥长度随着保密级别提高,增加很快. 由于RSA的特性,一个1024位的密钥只能
-
php基于base64解码图片与加密图片还原实例
本文实例讲述了php基于base64解码图片与加密图片还原的实现方法.分享给大家供大家参考.具体实现方法如下: 本例中$data是一段经过base64编码的图片.具体代码如下: 复制代码 代码如下: <?php //文件名:base64.php $data="/9j/4AAQSkZJRgABAQAAAQABAAD/2wCEABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ
-
python基于pyDes库实现des加密的方法
本文实例讲述了python基于pyDes库实现des加密的方法.分享给大家供大家参考,具体如下: 下载及简介地址:https://twhiteman.netfirms.com/des.html 如需要在python中使用des加密,可以直接使用pyDes库加密,该库提供了CBC和ECB两种加密方式. 1.Windows下安装 下载后pyDes-x.x.x.zip并解压后,里面有setup.py文件,使用命令 setup.py --help可查看详细使用. 你可以使用命令python setup.
-
PHP基于openssl实现的非对称加密操作示例
本文实例讲述了PHP基于openssl实现的非对称加密操作.分享给大家供大家参考,具体如下: 使用非对称加密主要是借助openssl的公钥和私钥,用公钥加密私钥解密,或者私钥加密公钥解密. 1.安装openssl和php的openssl扩展 2.生成私钥:openssl genrsa 用于生成rsa私钥文件,生成是可以指定私钥长度和密码保护 openssl genrsa -out rsa_private_key.pem 1024 3.生成公钥:rsa命令用于处理RSA密钥.格式转换和打印信息 o
-
PHP基于mcript扩展实现对称加密功能示例
本文实例讲述了PHP基于mcript扩展实现对称加密功能.分享给大家供大家参考,具体如下: 1.对称加密主要利用相同的密钥来实现,而非对称加密利用公钥和私钥来加密,比较而言对称加密速度快,但是安全性要低 为什么使用base64_encode(),主要是用于传参,直接加密完成后不是我们能理解的字符串,也就是大家所说的乱码 2.进行加密(使用mcript扩展,DES类型),关键点在于$key="key:1111",相同的密钥串 <?php header("content-t
-
基于Flutter实现手势密码加密与解锁功能
目录 前言 1.绘制静态图形 2.存储手势密码数据 3.添加手势交互 4.绘制.刷新密码线 5.加入密码错误动画 总结 前言 密码的由来:在公元前405年,由古希腊和斯巴达的战争中,由于斯巴达盟友波斯帝国背叛,导致古希腊和斯巴达两败俱伤,这时斯巴达抓了一个波斯国的信使,这个信使 没有任何情报,只有一条有着杂乱无章的希腊字母的普通腰带,最终斯巴达统帅破解了这条腰带,成功击败了希腊.这就是世界上最早的密码.同时也是世界上最早的解密. 密码在我们生活中无处不在,作为个人隐私的最后一道防线显得无比的重要
-
ASP.NET中DES加密与解密MD5加密帮助类的实现代码
public class TrialHelper { //默认密钥向量 private static byte[] Keys = { 0x12, 0x34, 0x56, 0x78, 0x90, 0xAB, 0xCD, 0xEF }; /// <summary> /// DES加密字符串 /// </summary> /// <param name="encryptString">待加密的字符串</param> /// <param
-
vue项目中 使用 pako.js 解密 gzip加密字符串的代码详解
前言 今天跟后台对接一个接口,接受到一个加密的值,说是通过gzip加密过的,然后就蒙蔽了, 赶紧上百度找了一下资料,通过一篇文章(原文在底部)发现有个js库可以解密,就下载轻松解密了 实现代码 poko.js可至Github下载 https://github.com/nodeca/pako or npm install pako import pako from 'pako' // 一个是加密:window.btoa(),一个是解密:window.atob() function decode(e
随机推荐
- mysql 5.7.20解压版安装方法步骤详解(两种方法)
- Java并发编程Semaphore计数信号量详解
- PowerShell时间记录脚本
- JavaScript 判断浏览器类型及版本
- js实现选中复选框文字变色的方法
- JavaScript基于对象去除数组重复项的方法
- 使用asp.net的pageDataSource中时索引问题解决方法
- jquery实现手机发送验证码的倒计时代码
- js实现随屏幕滚动的带缓冲效果的右下角广告代码
- js如何判断输入字符串长度
- Ajax使用JSON数据格式案例
- 用js判断页面是否加载完成实现代码
- windows脚本调试howto的方法
- jQuery学习笔记——jqGrid的使用记录(实现分页、搜索功能)
- jMessageBox 基于jQuery的窗口插件
- 实例详解Android Selector和Shape的用法
- js触发select onchange事件的小技巧
- 打造完美的IE网页木马
- 深入分析Android系统中SparseArray的源码
- php读取mssql的ntext字段返回值为空的解决方法