基于PHP實(shí)現(xiàn)解密或加密Cloudflar郵箱保護(hù)
Cloudflare 有一項(xiàng)功能挺不錯(cuò)的,就是將頁(yè)面上所有的郵箱地址都加密起來,防止機(jī)器人抓到然后干壞事。
這項(xiàng)功能要在后臺(tái)開啟 email address obfuscation
之后就可以在頁(yè)面上加入一個(gè)郵箱地址,比如說 abc@abc.com
查看源代碼就能發(fā)現(xiàn)類似如下的代碼
<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 的方式將這個(gè)郵箱地址解密出來
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";
得到的結(jié)果就是上面所說的 abc@abc.com
但是我們不想用 Cloudflare 的相關(guān)服務(wù),就是單純想用他這種加密技術(shù),所以我們就得將加密的算法也找出來
我們可以利用上面解密的代碼反向執(zhí)行,就可以得到一個(gè)加密的算法了
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;
}
我們就能利用這個(gè)加密算法,將手機(jī)號(hào)、郵箱地址、身份證等各種敏感的信息都加密起來,防止別人能輕易的抓取到數(shù)據(jù)
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- 六種php加密解密方法實(shí)例講解
- PHP rsa加密解密算法原理解析
- php中加密解密DES類的簡(jiǎn)單使用方法示例
- php的RSA加密解密算法原理與用法分析
- RSA實(shí)現(xiàn)JS前端加密與PHP后端解密功能示例
- Js通過AES加密后PHP用Openssl解密的方法
- PHP實(shí)現(xiàn)的AES雙向加密解密功能示例【128位】
- PHP實(shí)現(xiàn)的XXTEA加密解密算法示例
- PHP實(shí)現(xiàn)基于3DES算法加密解密字符串示例
- PHP實(shí)現(xiàn)的AES加密、解密封裝類與用法示例
- PHP實(shí)現(xiàn)的DES加密解密類定義與用法示例
- 基于PHP RSA密文過長(zhǎng)加密解密 越過1024的解決方法
- PHP的RSA加密解密方法以及開發(fā)接口使用
- PHP使用自定義key實(shí)現(xiàn)對(duì)數(shù)據(jù)加密解密的方法
- php實(shí)現(xiàn)的三個(gè)常用加密解密功能函數(shù)示例
- PHP代碼加密和擴(kuò)展解密實(shí)戰(zhàn)
相關(guān)文章
PHP基于工廠模式實(shí)現(xiàn)的計(jì)算器實(shí)例
這篇文章主要介紹了PHP基于工廠模式實(shí)現(xiàn)的計(jì)算器,實(shí)例分析了php工廠模式的實(shí)現(xiàn)原理與應(yīng)用技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-07-07
php創(chuàng)建session的方法實(shí)例詳解
這篇文章主要介紹了php創(chuàng)建session的方法,以實(shí)例形式較為詳細(xì)的分析了php創(chuàng)建及使用session的相關(guān)技巧與注意事項(xiàng),需要的朋友可以參考下2015-01-01
php download.php實(shí)現(xiàn)代碼 跳轉(zhuǎn)到下載文件(response.redirect)
一直對(duì)php不太熟悉,今天需要類型asp的 response.redirect語(yǔ)句,但一直沒有很好的解決方法。下面是問了朋友才知道的。2009-08-08
php在多維數(shù)組中根據(jù)鍵名快速查詢其父鍵以及父鍵值的代碼
有一個(gè)多維數(shù)組,有多少維大家可以自定義。假如我們要在這個(gè)數(shù)組中找一個(gè)鍵為'subIndex'的值,我們可以用for、foreach等方法遍歷查找 反過來,假如我們?nèi)我饨o出一個(gè)或多個(gè)鍵,要求找出這個(gè)鍵的父級(jí)數(shù)組的鍵和值。這又如何實(shí)現(xiàn)?2011-05-05
php刪除頁(yè)面記錄 同時(shí)刷新頁(yè)面 刪除條件用GET方式獲得
在某個(gè)頁(yè)面上顯示查詢數(shù)據(jù),并在每條數(shù)據(jù)后增加刪除功能,點(diǎn)擊“刪除”,刪除掉數(shù)據(jù),同時(shí)刷新頁(yè)面2012-01-01

