我有以下代碼...PHP中的AES-256和安全存儲密鑰?
$iv_size = mcrypt_get_iv_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_CBC);
$iv = mcrypt_create_iv($iv_size, MCRYPT_DEV_URANDOM);
$key = pack("H*", "Insert64CharacterStringHere");
$value = mcrypt_encrypt(MCRYPT_RIJNDAEL_128, $key, $value, MCRYPT_MODE_CBC, $iv);
$value = $iv . ":" . $value;
我使用這個在我的網站在AES-256加密數據。我將初始化向量與正在加密的數據一起存儲,並且數據和初始化向量之間是一個冒號,以便稍後可以將字符串分解爲初始化向量和數據,然後解密。
我想知道的是存儲密鑰的地方。如果我將它存儲在同一個數據庫中,它幾乎與不加密一樣不安全。我有一種感覺,把我的PHP代碼放在某處的鑰匙同樣不安全。
密鑰存儲在哪裏?這是存儲初始化向量的適當方法嗎?我是否安全地使用冒號作爲分隔符? I.E.初始化向量或數據是否會包含冒號?
除非你想讓某人身臨其境地在每次解密發生時輸入密碼,否則你將不得不以純文本的形式將密鑰*存儲在服務器上。您可以在應用程序和密鑰之間放置多層混淆,但事實是解密在某個時刻需要明文密鑰。他們的休息。 – Sammitch