Как зашифровать строку в php?

Пользователь

от rudolph_senger , в категории: PHP , 7 месяцев назад

Как зашифровать строку в php?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

1 ответ

Пользователь

от brenna , 7 месяцев назад

@rudolph_senger 

В PHP для зашифровки строки можно использовать различные алгоритмы шифрования. Наиболее распространенными являются шифр Цезаря, шифр Виженера, шифрование с использованием хэш-функций (например, MD5, SHA-1, SHA-256) и симметричное шифрование с использованием ключа (например, AES, DES).


Примеры кода для каждого из этих методов приведены ниже:

  1. Шифрование шифром Цезаря:
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
function caesarCipher($str, $shift){
    $result = "";
    $length = strlen($str);
    
    for($i = 0; $i < $length; $i++){
        if(ctype_alpha($str[$i])){
            $ascii = ord(ctype_upper($str[$i]) ? 'A' : 'a');
            $result .= chr(($ascii + $shift - $ascii) % 26 + $ascii);
        }else{
            $result .= $str[$i];
        }
    }
    
    return $result;
}

$str = "Hello World";
$shift = 3;
$encryptedStr = caesarCipher($str, $shift);
echo $encryptedStr; // output: Khoor Zruog


  1. Шифрование с использованием хэш-функции (например, MD5):
1
2
3
$str = "Hello World";
$encryptedStr = md5($str);
echo $encryptedStr; // output: 3e25960a79dbc69b674cd4ec67a72c62


  1. Симметричное шифрование с использованием ключа (например, AES):
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
function encrypt($str, $key){
    $method = "AES-256-CBC";
    $ivSize = openssl_cipher_iv_length($method);
    $iv = openssl_random_pseudo_bytes($ivSize);
    
    $encryptedStr = openssl_encrypt($str, $method, $key, OPENSSL_RAW_DATA, $iv);
    
    return base64_encode($iv.$encryptedStr);
}

function decrypt($encryptedStr, $key){
    $method = "AES-256-CBC";
    $ivSize = openssl_cipher_iv_length($method);
    $encryptedStr = base64_decode($encryptedStr);
    $iv = substr($encryptedStr, 0, $ivSize);
    $encryptedStr = substr($encryptedStr, $ivSize);
    
    return openssl_decrypt($encryptedStr, $method, $key, OPENSSL_RAW_DATA, $iv);
}

$str = "Hello World";
$key = "secret_key";
$encryptedStr = encrypt($str, $key);
echo $encryptedStr; // output: +YGaZHFkyyx6xViMPAxhTcJOKFqXV/RHxUgJG77H7to=
$decryptedStr = decrypt($encryptedStr, $key);
echo $decryptedStr; // output: Hello World


Вы можете выбрать подходящий метод шифрования на основе ваших требований к безопасности данных.