Я пытаюсь зашифровать конфиденциальные пользовательские данные, такие как личные сообщения на моем веб-сайте с php, перед тем как войти в базу данных. Я немного поработал в Интернете, и я нашел несколько важных вещей, которые нужно запомнить:
Никогда не используйте mcrypt, это отказоустойчивость.
AES основан на алгоритме Rijndael и до сих пор не преломлен.
AES также был рекомендован NSA и используется в шифровании данных правительства США, но, поскольку NSA рекомендует его, есть шанс, что они могут легко проникнуть в мои пользовательские данные.
Blowfish также не прерывается, но медленный и менее популярный.
Итак, я решил попробовать сначала AES-256 cbc. Но я все еще не уверен, что лучше не считать Blowfish вариантом. Поэтому любые рекомендации приветствуются.
И моя главная проблема заключается в том, как шифровать данные в php? Я не могу найти хорошее руководство по этому поводу в документации php. Каков правильный способ его реализации?
Любая помощь очень ценится.
Вы в Удаче.
Расширение openssl
имеет довольно простые в использовании методы для AES-256. Шаги, которые вам нужно предпринять, в основном …
$encryption_key = openssl_random_pseudo_bytes(32);
$iv = openssl_random_pseudo_bytes(openssl_cipher_iv_length('aes-256-cbc'));
openssl_encrypt()
openssl_encrypt($data, 'aes-256-cbc', $encryptionKey, $options, $initializationVector)
$options
можно установить в 0
для параметров по умолчанию или изменить на OPENSSL_RAW_DATA | OPENSSL_ZERO_PADDING
OPENSSL_RAW_DATA | OPENSSL_ZERO_PADDING
$encrypted = $encrypted . ':' . $iv;
explode(':' , $encrypted);
openssl_decrypt()
openssl_decrypt($encryptedData, 'aes-256-cbc', $encryptionKey, $options, $initializationVector)
openssl_functions()
не будет доступен по умолчанию, вы можете включить это расширение в файле php.ini
, раскомментируя строку. ;extension=php_openssl.dll
путем удаления ведущего ;