Эй, мне действительно нужно какое-то руководство.
ATM. Я использую этот метод шифрования / дешифрования для обычных строк.
function encrypt($pure_string) {
$iv_size = mcrypt_get_iv_size(MCRYPT_BLOWFISH, MCRYPT_MODE_ECB);
$iv = mcrypt_create_iv($iv_size, MCRYPT_RAND);
$encrypted_string = mcrypt_encrypt(MCRYPT_BLOWFISH, "!@#$%#^&*", utf8_encode($pure_string), MCRYPT_MODE_ECB, $iv);
return $encrypted_string;
}
function decrypt($encrypted_string) {
$iv_size = mcrypt_get_iv_size(MCRYPT_BLOWFISH, MCRYPT_MODE_ECB);
$iv = mcrypt_create_iv($iv_size, MCRYPT_RAND);
$decrypted_string = mcrypt_decrypt(MCRYPT_BLOWFISH, "!@#$%#^&*", $encrypted_string, MCRYPT_MODE_ECB, $iv);
return $decrypted_string;
}
Но после некоторых исследований это может быть не самым безопасным способом? Данные хранятся в базе данных MYSQL.
И у меня нет доступа для установки пользовательских плагинов php на веб-сервер. Так есть ли другой безопасный способ сделать это?
И как мне создать / сохранить мой ключ шифрования?
Это не используется для пароля и т. Д.
Но после некоторых исследований это может быть не самым безопасным способом?
Вам как-то удалось поразить священную троицу небезопасного кода:
Библиотека: использование заброшенной библиотеки (mcrypt), в которой много ошибок. OpenSSL можно использовать, но все еще сложно использовать его безопасно. разрядить / PHP-шифрование это гораздо лучшая альтернатива.
Блочный шифр: Использование Blowfish, где даже его создатель сказал, что это небезопасно. AES (= Rijndael-128) — лучшая альтернатива, но это не то, о чем вам следует беспокоиться при использовании хорошей библиотеки (см. 1).
Режим работы блочного шифра: использование режима ECB небезопасно почти в каждом случае (прокрутите вниз до пингвина). Как правило, необходим рандомизированный режим, такой как CBC, но это не то, о чем вам следует беспокоиться при использовании хорошей библиотеки (см. 1).
Это то, что относится к безопасной передаче данных (а затем и некоторых). Если вам нужно найти что-то в вашей базе данных на основе зашифрованных столбцов, то вам нужно подумать о добавлении хеш-столбца или использовании режима ECB.
И как мне создать / сохранить мой ключ шифрования?
Ключи обычно представляют собой простые байтовые массивы. Некоторые шифры, такие как DES, имеют слабые ключи, которые нужно проверить, и сгенерировать еще один. Хорошая библиотека обычно дает вам API для генерации ключа.
Хранение ключей является предметом многих споров. Подумайте о полезности шифрования некоторых данных, где ключ хранится рядом с зашифрованными данными. В конце концов, вам обычно требуется доступ и расшифровка этих данных часто. Там нет хорошего решения для этого. Если вы храните ключ шифрования на другом компьютере, а не на данных, вероятность того, что вы что-то не так и оставите уязвимой в сети, выше.
Других решений пока нет …