Tiada respons diterima apabila cuba menyahsulit rentetan yang disulitkan
P粉186904731
P粉186904731 2024-01-10 17:43:06
0
1
387

rreeee

Menggunakan dua fungsi ini untuk menyulitkan dan menyahsulit data, hanya penyulitan saya yang berfungsi.

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);
}

Saya telah mencuba segala-galanya, walaupun menulis semula fungsi beberapa kali, tetapi nampaknya tiada apa-apa yang berkesan.

P粉186904731
P粉186904731

membalas semua(1)
P粉895187266

$iv Pilihan mempunyai "Vektor Permulaan", yang bertindak sedikit seperti garam: ia memberikan keadaan awal yang berbeza untuk setiap mesej, untuk menjamin hasil yang berbeza untuk menyulitkan mesej yang sama dua kali.

Sama seperti garam, IV harus dipilih secara rawak apabila menyulitkan mesej dan kemudian dihantar atau disimpan dengan mesej supaya nilai yang sama boleh diberikan semasa menyahsulit mesej.

Anda mungkin mahu fungsi enkripsi anda ditambah 加密函数将$iv附加到输出,并解密 pada output dan nyahsulit untuk memisahkannya.

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
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan