Как просто зашифровать паролем строку?

Нужна простая функция для шифровки/дешифровки строк (для кукиз). Нашел openssl, прописал:

protected static function encrypt(string $string): string
    {
        return openssl_encrypt($string, self::ENCRYPTION_METHOD, self::KEY);
    }


    protected static function decrypt(string $string): string
    {
        return openssl_decrypt($string, self::ENCRYPTION_METHOD, self::KEY);
    }


Но ему пароля почему-то мало. требует какой-то IV, о котором в документации к функции ничего не сказано:

Warning: openssl_encrypt(): Using an empty Initialization Vector (iv) is potentially insecure and not recommended


Что это за IV, какой он должен быть и зачем вообще его прописывать?

Или может есть попроще функции для обратимого шифрования с паролем?
  • Вопрос задан
  • 1446 просмотров
Пригласить эксперта
Ответы на вопрос 4
Daemon23RUS
@Daemon23RUS
Вот фрагмент кода, который интуитивно понятен
$iv_size = mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_CBC);
$iv = mcrypt_create_iv($iv_size, MCRYPT_RAND);
$encryptedMessage = openssl_encrypt($textToEncrypt, $encryptionMethod, $secretHash, 0, $iv);
$decryptedMessage = openssl_decrypt($encryptedMessage, $encryptionMethod, $secretHash, 0, $iv);

Да, и вектор при расшифровке должен быть тот же что и при шифровании, и сохранить его надобно тоже в "надежном месте"
Ответ написан
@Nc_Soft
https://secure.php.net/manual/ru/function.mcrypt-e...
я как-то так шифровал
<?php
$phrase = 'secret message';
$key = 'KEY';
 
$encrypt = encrypt($key, $phrase);
$phrase = decrypt($key, $encrypt);
echo $encrypt, ' = ', $phrase;
 
function encrypt($key, $text) {
    $cipher = mcrypt_module_open(MCRYPT_BLOWFISH,'','cbc','');
    mcrypt_generic_init($cipher, $key, '12345678');
    $encrypted = mcrypt_generic($cipher,$text);
    mcrypt_generic_deinit($cipher);
    $encrypted = bin2hex($encrypted);
    return $encrypted;
}
 
function decrypt($key, $encrypted) {
    $encrypted = hex2bin($encrypted);
    $cipher = mcrypt_module_open(MCRYPT_BLOWFISH,'','cbc','');
    mcrypt_generic_init($cipher, $key, '12345678');
    $decrypted = mdecrypt_generic($cipher,$encrypted);
    mcrypt_generic_deinit($cipher);
    return $decrypted;
}

12345678 это размер блока
Ответ написан
sanchezzzhak
@sanchezzzhak
Ля ля ля...
Ответ написан
Комментировать
riot26
@riot26
<:З )~~
Что такое iv и как его юзать: stackoverflow.com/a/12486940
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
YCLIENTS Москва
от 200 000 до 350 000 ₽
Ведисофт Екатеринбург
от 25 000 ₽
ИТЦ Аусферр Магнитогорск
от 100 000 до 160 000 ₽