2011-05-30 145 views
8

如果您想使用Session類,CodeIgniter 2.0.2需要在配置文件中設置一個加密密鑰,即$config['encryption_key']。是否可以任意字符串?任何安全encryption_key的例子?CodeIgniter中的加密密鑰

謝謝。

回答

22

$config['encryption_key'] = 'howAreYou' 

讓你知道加密函數生成編碼消息會比原始郵件長大約2.6倍是很重要的。例如,如果加密字符串「我的超級祕密數據」(長度爲21個字符),則最終將得到一個大約55個字符的編碼字符串(我們說「粗略」,因爲編碼的字符串長度以64爲增量位集羣,所以它不完全是線性的)。選擇數據存儲機制時請記住這些信息。例如,Cookie只能保存4K條信息。

+1

+1有關餅乾大小的信息,我直到我讀到這個並且使用了一些隨機的複雜密鑰 – Nishanthan 2014-07-15 13:01:09

17

除了Chumillas的回答,我個人使用這個Random Key Generator爲我的CodeIgniter加密字符串。快捷方便。

+2

,從Chumillas的說法中可以得知,使用該網站提供的256位加密密鑰會乘以2.6倍嗎?如果是這樣,那會不會在cookie中佔用更多空間? – a7omiton 2013-04-09 13:13:47

+1

我想它會。但是,CodeIgniter建議使用隨機的32位字符加密密鑰(如隨機密鑰生成器提供的加密密鑰),以根據以下內容最大限度地利用加密算法:http://ellislab.com/codeigniter/user-guide/libraries/encryption.html – Fuseblown 2014-06-18 22:27:54

2

剛去的application/config

打開config.php文件

找出字

$config['encryption_key'] = ''; 

$config['encryption_key'] = 'your_encryption_key_here'; 
1

替換此加密密鑰可以是任何字符串的類型,但要使它強大(像一個好的密碼應該是),建議選擇一個包含隨機字母數字字符的字符。也可以在大寫和小寫字母之間切換。

爲了簡化這個過程,我創建了一個方便的在線解決方案,它爲您生成一個隨機的32個字符的字母數字加密密鑰。它可以用於任何CodeIgniter,Laravel或您需要的項目。

encryption key generator

+1

請提供更多信息。提供到外部信息源的鏈接不是Stackoverflow的要點。 – user2314737 2014-02-19 12:56:16

0

將密鑰保存到的application/config/config.php文件,打開文件,並設置:

上線227 $config['encryption_key'] = "YOUR KEY";

+0

$ myconfig =&get_config(); $ key = $ myconfig ['encryption_key']; //並得到它 – Robot70 2016-12-08 20:10:33

0

我使用下面的代碼我的應用程序的安裝程序。它需要128個字節的隨機數據(轉換爲一個十六進制字符串),並一次接受兩個字符,轉換爲十進制數,並檢查它們是否在可接受的範圍內(字母數字,帶符號,無空格或字符不會玩你的編輯器或配置文件很好 - 別名')

32個字符是128位,所以它適用於塊密碼。

function random_key_string() { 
    $source = bin2hex(openssl_random_pseudo_bytes(128)); 
    $string = ''; 
    $c = 0; 
    while(strlen($string) < 32) { 
     $dec = gmp_strval(gmp_init(substr($source, $c*2, 2), 16),10); 
     if($dec > 33 && $dec < 127 && $dec !== 39) 
      $string.=chr($dec); 
     $c++; 
    } 
    return $string; 
} 
+0

嗨@Karimkorun - 我期待通過安裝程序自己設置此密鑰,並遇到您的答案。你如何去寫配置文件的值?代碼點火器是否提供了一個方便的方法? – 2014-07-21 18:27:51

+0

我寫了一個安裝程序來執行此操作,因爲它是一個開源應用程序。您可以在創建新應用程序時編寫CLI腳本來生成配置文件。 – karimkorun 2014-08-08 02:10:25

3

Codeigniter 3.1。0 您不得使用「encryption_key」常規文本

「最關鍵的應該是儘可能隨機的,它必須不是一個普通的文本字符串,也不是一個散列函數的輸出等。爲了創造一個正確的密鑰,則必須使用加密庫的create_key()方法」

$this->load->library('encryption'); 
$key = $this->encryption->create_key(16); 
// Get a hex-encoded representation of the key: 
$key = bin2hex($this->encryption->create_key(16)); 

// Put the same value in your config with hex2bin(), 
// so that it is still passed as binary to the library: 
$config['encryption_key'] = hex2bin(<your hex-encoded key>); 

來源:https://codeigniter.com/userguide3/libraries/encryption.html#setting-your-encryption-key

+0

我知道配置設置進入config.php,但你把$ key的設置放在哪裏? – bjacobs 2017-08-18 20:32:30