Aucune réponse reçue lors de la tentative de déchiffrement de la chaîne chiffrée
P粉186904731
P粉186904731 2024-01-10 17:43:06
0
1
425

function encrypt($string, $key)
{
    $method = "BF-CBC";
    $iv = random_bytes(openssl_cipher_iv_length($method));
    $options = 0;
    $key = hash("sha256", $key);
    return openssl_encrypt($string, $method, $key, $options, $iv);
}

function decrypt($string, $key)
{
    $method = "BF-CBC";
    $iv = random_bytes(openssl_cipher_iv_length($method));
    $options = 0;
    $key = hash("sha256", $key);
    return openssl_decrypt($string, $method, $key, $options, $iv);
}

En utilisant ces deux fonctions pour crypter et décrypter les données, seul mon cryptage fonctionne.

// Encrypting foo 
echo encrypt("foo", "hfgdhgdfhgfd");

// Response
DyUxPwraJyk=

// Decrypting DyUxPwraJyk= 
echo decrypt("DyUxPwraJyk=", "hfgdhgdfhgfd");

// Doesn't respond with anything.

J'ai tout essayé, même réécrire la fonction plusieurs fois, mais rien ne semble fonctionner.

P粉186904731
P粉186904731

répondre à tous(1)
P粉895187266

$iv Les options ont un "Vecteur d'initialisation", qui agit un peu comme un sel : il fournit un état initial différent pour chaque message, de manière à garantir des résultats différents pour chiffrer deux fois le même message.

Tout comme le sel, le IV doit être sélectionné au hasard lors du cryptage du message, puis transmis ou stocké avec le message afin que la même valeur puisse être fournie lors du déchiffrement du message.

Vous souhaiterez peut-être que votre fonction encrypt ajoute 加密函数将$iv附加到输出,并解密 à la sortie et decrypt pour les séparer.

function encrypt($string, $key)
{
    $method = "BF-CBC";
    $iv = random_bytes(openssl_cipher_iv_length($method));
    $options = 0;
    $key = hash("sha256", $key);
    return base64_encode($iv)
        . '|'
        . openssl_encrypt($string, $method, $key, $options, $iv);
}

function decrypt($encryptedString, $key)
{
    $method = "BF-CBC";
    [ $iv, $ciphertext ] = explode('|', $encryptedString, 2);
    $iv = base64_decode($iv);
    $options = 0;
    $key = hash("sha256", $key);
    return openssl_decrypt($ciphertext, $method, $key, $options, $iv);
}

echo encrypt("foo", "hfgdhgdfhgfd");
# fJTTArVw8e8=|zJOHacxbs1Q=

echo decrypt("fJTTArVw8e8=|zJOHacxbs1Q=", "hfgdhgdfhgfd");
# foo
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal