貼一對php雙向加密函數(shù)

加密函數(shù):輸入?yún)?shù)字符串,返回機密字符串。
Coding::tiriEncode(String)
解密函數(shù):輸入上邊函數(shù)的加密結(jié)果,反解到加密前字符串
Coding::tiriDecode(String)

特點:
1.同一個輸入,每次輸出都不同,可以有若干個加密后的版本。無論密文什么樣,都能反解回原文,無信息損失。
2.完全自己寫的,估計網(wǎng)上沒有完全類似的。用了多年,一直挺靠譜的。

如果有同學感興趣,可以拿去自用

namespace Tiri\Widget;
class Coding{

    static function  tiriEncode($str , $factor = 0){
        $len = strlen($str);
        if(!$len){
            return;
        }
        if($factor  === 0){
            $factor = mt_rand(1, min(255 , ceil($len / 3)));
        }
        $c = $factor % 8;

        $slice = str_split($str ,$factor);
        for($i=0;$i < count($slice);$i++){
            for($j=0;$j< strlen($slice[$i]) ;$j ++){
                $slice[$i][$j] = chr(ord($slice[$i][$j]) + $c + $i);
            }
        }
        $ret = pack('C' , $factor).implode('' , $slice);
        return self::base64URLEncode($ret);
    }

    static function tiriDecode($str){  
        if($str == ''){
            return;
        }     
        $str = self::base64URLDecode($str);
        $factor =  ord(substr($str , 0 ,1));
        $c = $factor % 8;
        $entity = substr($str , 1);
        $slice = str_split($entity , $factor);
        if(!$slice){
            return false;
        }
        for($i=0;$i < count($slice); $i++){
            for($j =0 ; $j < strlen($slice[$i]); $j++){
                $slice[$i][$j] = chr(ord($slice[$i][$j]) - $c - $i );
            }
        }
        return implode($slice);
    }

    static function base64URLEncode($data) {
        return rtrim(strtr(base64_encode($data), '+/', '-_'), '=');
    }

    static function base64URLDecode($data) {
        return base64_decode(str_pad(strtr($data, '-_', '+/'), strlen($data) % 4, '=', STR_PAD_RIGHT));
    }

    static function stringXor($str){
        for ($i = 0; $i < strlen($str); ++$i) {
            $str[$i] = chr(ord($str[$i]) ^ 0x7F);
        }
        return $str;
    }
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關(guān)閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,628評論 19 139
  • PHP常用函數(shù)大全 usleep() 函數(shù)延遲代碼執(zhí)行若干微秒。 unpack() 函數(shù)從二進制字符串對數(shù)據(jù)進行解...
    上街買菜丶迷倒老太閱讀 1,504評論 0 20
  • php usleep() 函數(shù)延遲代碼執(zhí)行若干微秒。 unpack() 函數(shù)從二進制字符串對數(shù)據(jù)進行解包。 uni...
    思夢PHP閱讀 2,135評論 1 24
  • 新印制學校介紹單頁,派人去潛在學員(或家長)多的地方分發(fā),是中小培訓學校招生管理最常用的市場手段之一。但是大家回顧...
    龍小蝦與螃大蟹閱讀 746評論 0 1
  • 米蘭·昆德拉的《不能承受的生命之輕》,法語里叫做,L'insoutenable légèreté de l'êtr...
    芳非菲閱讀 1,349評論 0 1

友情鏈接更多精彩內(nèi)容