wecenter學(xué)習(xí)筆記-對(duì)稱(chēng)加密

該文是wecenter學(xué)習(xí)筆記的一部分

對(duì)稱(chēng)加密

php對(duì)稱(chēng)加密介紹

參照 塊密碼的工作方式

基本的思路:

  1. 將數(shù)據(jù)切分成固定大小的數(shù)據(jù)塊(分組)處理

    對(duì)確定長(zhǎng)度的分組數(shù)據(jù)處理時(shí)(ECB/CBC)椎咧,如果最后一塊的數(shù)據(jù)不足一塊(16字節(jié))寝殴,需要進(jìn)行填充捧颅,比如

    PKCS#5

    • 在最后一塊末尾填充5個(gè)字節(jié)的0x05(填充的字節(jié)都是一個(gè)相同的字節(jié),該字節(jié)的值,就是要填充的字節(jié)的個(gè)數(shù))
    • 如果數(shù)據(jù)剛好一塊數(shù)據(jù),則附加一整塊的0xFF(16字節(jié)的填充Ox10)
  1. 根據(jù)不同的加密模式和算法對(duì)數(shù)據(jù)塊加密

wecenter將用戶信息(uid前硫、用戶名临梗、密碼)通過(guò)對(duì)稱(chēng)加密的方式存儲(chǔ)到cookie中涡扼。

** 支持各種加密模式 **

除ECB和CBC是固定塊長(zhǎng)度加密外,其它的(CFB/OFB/CTR)都是可變塊長(zhǎng)度加密夜焦。

  • MCRYPTE_MODEL_ECB(Electronic codebook壳澳,電子密碼本)

    數(shù)據(jù)塊各自加密,數(shù)據(jù)塊直接互不相關(guān)

    優(yōu)點(diǎn):

    1. 簡(jiǎn)單茫经;
    2. 有利于并行計(jì)算巷波;
    3. 誤差不會(huì)被傳送;

    缺點(diǎn):

    1. 不能隱藏明文的模式卸伞;
    2. 可能對(duì)明文進(jìn)行主動(dòng)攻擊抹镊;
  • MCRYPTE_MODEL_CBC(Cipher-block chaining,密碼塊鏈)

    上一塊的密文塊和當(dāng)前明文塊做xor運(yùn)算后再做加密
    優(yōu)點(diǎn):

    1. 不容易主動(dòng)攻擊,安全性好于ECB,適合傳輸長(zhǎng)度長(zhǎng)的報(bào)文,是SSL荤傲、IPSec的標(biāo)準(zhǔn)垮耳。

    缺點(diǎn):

    1. 不利于并行計(jì)算;
    2. 誤差傳遞遂黍;
    3. 需要初始化向量IV
  • MCRYPTE_MODEL_CFB(Cipher feedback终佛,密碼反饋)

    將前一塊加密后輸出和當(dāng)前明文塊做xor運(yùn)算后形成新的密文流入下一塊的加密過(guò)程

    優(yōu)點(diǎn):

    1. 隱藏了明文模式;
    2. 分組密碼轉(zhuǎn)化為流模式;
    3. 可以及時(shí)加密傳送小于分組的數(shù)據(jù);

    缺點(diǎn):

    1. 不利于并行計(jì)算;
    2. 誤差傳送:一個(gè)明文單元損壞影響多個(gè)單元;
    3. 唯一的IV;
  • MCRYPTE_MODEL_NCFB(N bits Cipher feedback, N位密碼反饋模式)

    與CFB過(guò)程一樣雾家,只是每次僅將前一塊加密后輸出的高n位和當(dāng)前明文塊高n位xor

  • MCRYPTE_MODEL_OFB(Output Feedback, 輸出反饋模式)

    將前一塊的加密后的輸出流入下一塊的加密過(guò)程铃彰,而將明文塊和加密后的輸出做xor作為密文塊

  • MCRYPTE_MODEL_NOFB(N bits output feedback, N位輸出反饋模式)

    與NOFB過(guò)程一樣,只是每次僅將前一塊加密后輸出的高n位流入下個(gè)過(guò)程

  • MCRYPTE_MODEL_CTR

    先將一個(gè)自增的算子加密芯咧,然后將密文與明文做xor牙捉,這樣相當(dāng)于每次秘鑰都不一樣。

  • MCRYPTE_MODEL_STREAM

    !!! 沒(méi)有搞清楚

** PHP通過(guò)mcrypt加密擴(kuò)展函數(shù)敬飒,可以支持各種加密算法 **

MCRYPT_ciphername

  • des
  • rc2
  • cast-128
  • cast-256
  • gost
  • rijndael-128
  • rijndael-192
  • rijndael-256
  • twofish
  • arcfour
  • loki97
  • saferplus
  • wake
  • serpent
  • xtea
  • blowfish
  • blowfish-compat
  • enigma
  • tripledes

mcrypt使用

** 加密 **

system/core/crypte.php#encode

public function encode($data, $key = null)
{
    $mcrypt = mcrypt_module_open($this->get_algorithms(), '', MCRYPT_MODE_ECB, '');

    mcrypt_generic_init($mcrypt, $this->get_key($mcrypt, $key), mcrypt_create_iv(mcrypt_enc_get_iv_size($mcrypt), MCRYPT_RAND));

    $result = mcrypt_generic($mcrypt, gzcompress($data));

    mcrypt_generic_deinit($mcrypt);
    mcrypt_module_close($mcrypt);

    return $this->get_algorithms() . '|' . $this->str_to_hex($result);
}

步驟:

  1. 根據(jù)加密算法和加密模式獲取加密模塊
  2. 初始化隨機(jī)向量
  3. 初始化加密器
  4. 加密
  5. 釋放資源
  6. 關(guān)閉加密模塊

** 解密

system/core/crypte.php#decode

public function decode($data, $key = null)
{
   if (strstr($data, '|'))
   {
        $decode_data = explode('|', $data);

        $algorithm = $decode_data[0];

       $data = str_replace($algorithm . '|', '', $data);

       $data = $this->hex_to_str($data);
   }
   else
   {
       $algorithm = $this->get_algorithms();

       $data = base64_decode($data);
   }

   $mcrypt = mcrypt_module_open($algorithm, '', MCRYPT_MODE_ECB, '');

   mcrypt_generic_init($mcrypt, $this->get_key($mcrypt, $key), mcrypt_create_iv(mcrypt_enc_get_iv_size($mcrypt), MCRYPT_RAND));

   $result = trim(mdecrypt_generic($mcrypt, $data));

   mcrypt_generic_deinit($mcrypt);
   mcrypt_module_close($mcrypt);

   return gzuncompress($result);
}

步驟:

  1. 根據(jù)加密算法和加密模式獲取模塊
  2. 初始化隨機(jī)向量
  3. 初始化加密器
  4. 解密密
  5. 釋放資源
  6. 關(guān)閉模塊

上傳圖片并生成縮略圖 ←o→ 國(guó)際化和多語(yǔ)言

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末邪铲,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子无拗,更是在濱河造成了極大的恐慌带到,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,039評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件英染,死亡現(xiàn)場(chǎng)離奇詭異阴孟,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)税迷,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,426評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén)永丝,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人箭养,你說(shuō)我怎么就攤上這事慕嚷。” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 165,417評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵喝检,是天一觀的道長(zhǎng)嗅辣。 經(jīng)常有香客問(wèn)我,道長(zhǎng)挠说,這世上最難降的妖魔是什么澡谭? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,868評(píng)論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮损俭,結(jié)果婚禮上蛙奖,老公的妹妹穿的比我還像新娘。我一直安慰自己杆兵,他們只是感情好雁仲,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,892評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著琐脏,像睡著了一般攒砖。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上日裙,一...
    開(kāi)封第一講書(shū)人閱讀 51,692評(píng)論 1 305
  • 那天吹艇,我揣著相機(jī)與錄音,去河邊找鬼昂拂。 笑死受神,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的政钟。 我是一名探鬼主播,決...
    沈念sama閱讀 40,416評(píng)論 3 419
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼樟结,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼养交!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起瓢宦,我...
    開(kāi)封第一講書(shū)人閱讀 39,326評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤碎连,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后驮履,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體鱼辙,經(jīng)...
    沈念sama閱讀 45,782評(píng)論 1 316
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,957評(píng)論 3 337
  • 正文 我和宋清朗相戀三年玫镐,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了倒戏。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,102評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡恐似,死狀恐怖杜跷,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤葛闷,帶...
    沈念sama閱讀 35,790評(píng)論 5 346
  • 正文 年R本政府宣布憋槐,位于F島的核電站,受9級(jí)特大地震影響淑趾,放射性物質(zhì)發(fā)生泄漏阳仔。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,442評(píng)論 3 331
  • 文/蒙蒙 一扣泊、第九天 我趴在偏房一處隱蔽的房頂上張望近范。 院中可真熱鬧,春花似錦旷赖、人聲如沸顺又。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,996評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)稚照。三九已至,卻和暖如春俯萌,著一層夾襖步出監(jiān)牢的瞬間果录,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,113評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工咐熙, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留弱恒,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,332評(píng)論 3 373
  • 正文 我出身青樓棋恼,卻偏偏與公主長(zhǎng)得像返弹,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子爪飘,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,044評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容