2014-10-18 77 views
0

我是新來加密和利用這個類來獲得令牌,有人可以幫助我瞭解這兩個函數在參考,視頻教程等的幫助下進行了深入瞭解。目的是理解並使用相同的技術在其他語言中實現。使用相同的技術加密令牌在PHP

class Crypt { 

public static function encrypt($data, $secret) { 
    $iv_size = mcrypt_get_iv_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_CBC); 
    $iv = mcrypt_create_iv($iv_size, MCRYPT_RAND); 
    $key = pack('H*', $secret); 
    return base64_encode($iv . mcrypt_encrypt(MCRYPT_RIJNDAEL_128, $key, $data, MCRYPT_MODE_CBC, $iv)); 
} 

public static function decrypt($data, $secret) { 
    $data = base64_decode($data); 
    $iv_size = mcrypt_get_iv_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_CBC); 
    $iv = substr($data, 0, $iv_size); 
    $data = substr($data, $iv_size); 
    $key = pack('H*', $secret); 
    return trim(mcrypt_decrypt(MCRYPT_RIJNDAEL_128, $key, $data, MCRYPT_MODE_CBC, $iv), chr(0)); 
} 
} 

感謝

回答

0

以及實施其他語言

我懷疑,)

不是一個輕鬆的話題。 您將不得不深入研究不同的密碼和加密,尤其是 RIJNDAEL_128和CBC,就像您發佈的一樣。

如果您想了解rinjndael,請查找AES (Advanced Encryption Standard)

SPEC 您可能會發現在官方規格:http://csrc.nist.gov/publications/fips/fips197/fips-197.pdf

這是AES capther了克里斯托夫·帕和揚Pelzl的加密教科書: http://wiki.crypto.rub.de/Buch/download/Understanding-Cryptography-Chapter4.pdf

教程

影片

動畫/演示

PHP手冊 - 擴展mcrypt的

+0

好奇,爲什麼它是很難用其他語言來實現,比如我正在考慮它的node.js,爲什麼我喜歡這個算法,因爲它產生每次對於相同字符串的唯一標記 – user2727195 2014-10-18 15:08:02

+0

我認爲這已經存在:https://github.com/chengxianga2008/node-cryptojs-aes ..檢查CryptoJS AES實現.. https://code.google.com/p /crypto-js/source/browse/tags/3.1.2/src/aes.js – 2014-10-18 15:15:44