PHP: Самый безопасный (дешифруемый) метод шифрования?

В PHP, какой ( дешифруемый ) алгоритм шифрования наиболее безопасен?
Я имею в виду, что MD5 не может быть расшифрован обратно вправо?
Я нашел полный рабочий класс с mcrypt (затем закодированным с base64 снова), который может зашифровать и дешифровать обратно .

Пример 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.

Solutions Collecting From Web of "PHP: Самый безопасный (дешифруемый) метод шифрования?"

Вероятно, вы хотите MCRYPT_RIJNDAEL_256. Rijndael с блоками размером 128, 192 и 256 бит является обобщением AES, который поддерживает только размер блока 128 бит.

См. http://us.php.net/manual/en/mcrypt.ciphers.php и http://us.php.net/manual/en/book.mcrypt.php.

Просто уточнить: алгоритмы MD и SHA являются алгоритмами HASH : они вычисляют контрольную сумму данных, поэтому вы можете позже проверить, что она не была изменена. Подумайте об этом так:

Ваши данные: 592652 . Вы хотите, чтобы контрольная сумма знала, что это не было изменено, вы делаете что-то вроде:

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

Теперь, когда вы хотите проверить свои данные, вы можете выполнить его с помощью одного и того же вычисления и посмотреть, получится ли у вас тот же результат:

2

Однако нет способа взять это 2 и вернуть исходные данные: 592652.

Конечно, реальные алгоритмы хэшей вычислений различны, этот пример – всего лишь демонстрация общей идеи. Это не шифрование.

Что касается шифрования, то в наши дни алгоритм AES, вероятно, наиболее безопасен, я бы отправился на AES-512. Как отмечали другие, RIJNDAEL следует отдать предпочтение. (AES и Rijndael используются обмениваемо, theyre почти то же самое: Rijndael – это имя алгоритма, в то время как AES – это название стандарта шифрования, который использует Rijndael в качестве своего метода).

Base64 не является алгоритмом шифрования.

На PHP вы можете использовать расширение mcrypt для безопасного шифрования и дешифрования данных.

Blowfish – один из наиболее безопасных (и по умолчанию в mcrypt) алгоритмах, поддерживаемых PHP.

См. Полный список поддерживаемых алгоритмов.


Учитывая, что вопрос изменился, это будет новый ответ:

mcrypt не является алгоритмом шифрования. Это библиотека, которая обеспечивает интерфейс для различных алгоритмов шифрования для шифрования произвольных данных.

В контексте PHP это более или менее единственная достойная вещь, которую вы должны шифровать данные.