Cloudflare 有一項功能挺不錯的,就是將頁面上全部的郵箱地址都加密起來,防止機器人抓到而後幹壞事。javascript
這項功能要在後臺開啓 email address obfuscationjava
以後就能夠在頁面上加入一個郵箱地址,好比說 abc@abc.com算法
查看源代碼就能發現相似以下的代碼ide
<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 的相關服務,就是單純想用他這種加密技術,因此咱們就得將加密的算法也找出來spa
咱們能夠利用上面解密的代碼反向執行,就能夠獲得一個加密的算法了code
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;}
咱們就能利用這個加密算法,將手機號、郵箱地址、身份證等各類敏感的信息都加密起來,防止別人能輕易的抓取到數據cdn
以上就是本文的所有內容,但願對你們的學習有所幫助,也但願你們多多支持。ip