2011-09-21 53 views
1

在PHP中,哪個(可解密的)加密算法是最安全的?
我的意思是MD5不能解密回來嗎?
我發現與mcrypt(然後用base64再次編碼)的完整工作類,它可以加密和解密回
PHP:最安全(可解密)的加密方法?

樣品mcrypt的(加密):

function encrypt($value) { 
    if(!$value){return false;} 
    $text = $value; 
    $iv_size = mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_ECB); 
    $iv = mcrypt_create_iv($iv_size, MCRYPT_RAND); 
    $crypttext = mcrypt_encrypt(MCRYPT_RIJNDAEL_256, $this->key, $text, MCRYPT_MODE_ECB, $iv); 
    return trim($this->safe_b64encode($crypttext)); 
} 

然後使用Base64再次編碼:

function safe_b64encode($string) { 
    $data = base64_encode($string); 
    $data = str_replace(array('+','/','='),array('-','_',''),$data); 
    return $data; 
} 

(。很抱歉的代碼只是與加密,沒有解密我只是給樣品) 但我只想知道是否有其他更安全的算法,然後使用mcrypt。

+0

'base64'是** NO **加密!這是某種編碼。因此它根本就不安全。在PHP的'ext/mcrypt'中尋找諸如AES(Rijndael),Blowfish,Serpent,Skipjack等的東西:http://de2.php.net/manual/en/book.mcrypt.php –

+0

請縮小你的範圍問題,因爲答案真的取決於你想要加密的東西。只是澄清:MD5不是「加密」 - 它是「散列」。它意味着不可逆轉。同樣,Base64不是「加密」 - 它是「編碼」。請仔細閱讀(維基百科已足夠)。你應該知道沒有最好的算法 - 都有其優點和缺點。澄清你自己,請 – friendzis

+0

你需要什麼? –

回答

1

Base64是不是一個加密算法。

在PHP上,您可以使用mcrypt擴展來安全地加密和解密數據。

Blowfish是PHP支持的最安全(並且是默認的mcrypt)算法之一。

查看支持算法的完整列表here


考慮到改變的問題,這將是新的答案:

mcrypt的是的加密算法。它是一個爲不同加密算法提供接口以加密任意數據的庫。

在PHP上下文中,這或多或少是你必須加密數據的唯一體面的東西。

+0

我編輯了我的答案 – thwd

+0

然後,對不起我的愚蠢questoin :(正如你所說,mcrypt提供了一個接口到不同的加密算法,所以**加密算法**實際上是在我的代碼中使用? –

+1

'MCRYPT_RIJNDAEL_256' < - 那一個 – thwd

2

只是爲了闡明:MDSHA算法是HASH算法:他們計算給定數據的校驗和,以便您以後可以驗證它沒有被更改。可以這樣想:

您的數據是592652。你想校驗知道這個處理不當被改變的話,你做這樣的事情:

5+9+2+6+5+2=29 
2+9=11 
1+1=2 

現在,當你要檢查你的數據,你可以把它通過同樣的計算,看看你是否得到相同的結果:

但是沒有辦法採取的是2,回到你原來的數據:592652。

當然,真正的計算哈希算法是不同的,這個例子只是一個總體思想的示範。這不是加密。對於加密,AES算法家族現在可能是最安全的,我會去AES-512。正如其他人指出,RIJNDAEL應該是首選。 (AES和Rijndael可交換使用,它們幾乎是相同的:Rijndael是算法的名稱,而AES是採用Rijndael作爲其方法的加密標準的名稱)。

+1

謝謝你向我提供了我過去2年來一直在尋找的東西 –