Le langage PHP est souvent utilisé pour le développement Web Lors de la transmission et du stockage des données, des algorithmes de cryptage et de déchiffrement sont souvent nécessaires pour garantir la sécurité des données. Cependant, certaines erreurs courantes de chiffrement et de déchiffrement seront rencontrées au cours du développement. Cet article présentera les causes de ces erreurs et proposera des solutions.
Cause : Lors de l'utilisation de l'algorithme de cryptage, PHP utilise le jeu de caractères ASCII pour la conversion par défaut. Cependant, si le texte brut contient des caractères provenant d'autres langues, comme le chinois, le japonais, etc., des caractères tronqués apparaîtront.
Solution : Vous pouvez utiliser la fonction mb_convert_encoding() pour encoder la conversion, par exemple :
$encrypted_str = base64_encode(openssl_encrypt(mb_convert_encoding($str, 'UTF-8', 'auto'), $method, $key, $options, $iv));
Cause : Lors du cryptage, la chaîne cryptée peut être un encodage d'URL, mais j'ai oublié de le décoder lors du décryptage.
Solution : utilisez la fonction urlencode() pour décoder la chaîne cryptée avant le décryptage, par exemple :
$decrypted_str = openssl_decrypt(base64_decode(urldecode($encrypted_str)), $method, $key, $options, $iv);
Cause : MD5 Le () La fonction renvoie toujours la longueur de la chaîne de 32 bits après le chiffrement, donc si la longueur du texte en clair est différente, la longueur chiffrée sera également différente.
Solution : Vous pouvez utiliser d'autres méthodes de cryptage dans la fonction hash(), telles que sha1(), sha256(), sha512(), etc., qui sont toutes de longueur fixe. Par exemple :
$encrypted_str = hash('sha256', $str);
Cause : Lors de l'utilisation de l'algorithme de cryptage RSA, si la longueur de la clé n'est pas suffisante, le texte en clair ne peut pas être crypté.
Solution : lors de la génération d'une paire de clés, vous devez spécifier la longueur de la clé. Par exemple :
$config = array( "digest_alg" => "sha512", "private_key_bits" => 2048, "private_key_type" => OPENSSL_KEYTYPE_RSA, ); $resource = openssl_pkey_new($config);
Ce qui précède est une introduction aux erreurs et solutions courantes de chiffrement et de déchiffrement dans le développement PHP. Lorsque vous utilisez des algorithmes de cryptage, vous devez faire attention aux problèmes d'encodage, au codage d'URL, aux méthodes de cryptage, à la longueur de la clé et à d'autres facteurs pour garantir la sécurité des données et le fonctionnement normal du programme.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!