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); }
Mit diesen beiden Funktionen zum Ver- und Entschlüsseln von Daten funktioniert nur meine Verschlüsselung.
// Encrypting foo echo encrypt("foo", "hfgdhgdfhgfd"); // Response DyUxPwraJyk= // Decrypting DyUxPwraJyk= echo decrypt("DyUxPwraJyk=", "hfgdhgdfhgfd"); // Doesn't respond with anything.
Ich habe alles versucht, sogar die Funktion mehrmals umgeschrieben, aber nichts scheint zu funktionieren.
$iv
选项有“初始化向量”,它的作用有点像盐:它为每条消息提供不同的初始状态,以便保证对同一消息加密两次不同的结果。就像盐一样,在加密消息时应随机选择 IV,然后与消息一起传输或存储,以便在解密消息时可以提供相同的值。
您可能希望您的
加密
函数将$iv
附加到输出,并解密
将它们分离出来。