Maison > base de données > tutoriel mysql > Pourquoi ne puis-je pas décrypter les données cryptées dans MySQL ?

Pourquoi ne puis-je pas décrypter les données cryptées dans MySQL ?

Susan Sarandon
Libérer: 2024-11-19 03:20:02
original
732 Les gens l'ont consulté

Why Can't I Decrypt Encrypted Data in MySQL?

Impossible de déchiffrer les données cryptées dans MySQL

Dans MySQL, la fonction AES_ENCRYPT() est utilisée pour crypter les données, tandis que AES_DECRYPT() est utilisé pour décrypter les données cryptées. Cependant, lors de l'interrogation de données chiffrées, les utilisateurs peuvent rencontrer un problème où les données déchiffrées ne sont pas visibles.

Pour résoudre ce problème, il est important de comprendre que AES_ENCRYPT() renvoie une chaîne binaire, tandis que AES_DECRYPT() renvoie la chaîne binaire. chaîne originale. Par conséquent, lors de la sélection de données chiffrées, le résultat déchiffré doit être explicitement reconverti en chaîne de caractères.

Par exemple, considérons le tableau suivant :

CREATE TABLE `user` (
  `id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
  `first_name` VARBINARY(100) NULL,
  `address` VARBINARY(200) NOT NULL,
  PRIMARY KEY (`id`)
)
ENGINE = InnoDB
DEFAULT CHARACTER SET = utf8
COLLATE = utf8_general_ci;
Copier après la connexion

Les données peuvent être insérées dans le tableau en utilisant la fonction AES_ENCRYPT() :

INSERT INTO user (first_name, address) VALUES (AES_ENCRYPT('Obama', 'usa2010'), AES_ENCRYPT('Obama', 'usa2010'));
Copier après la connexion

Cependant, lors de l'interrogation des données cryptées, la requête suivante n'affichera pas la chaîne d'origine :

SELECT AES_DECRYPT(first_name, 'usa2010'), AES_DECRYPT(address, 'usa2010') FROM user;
Copier après la connexion

Au lieu de cela, le résultat déchiffré sera une chaîne binaire qui n'est pas visible. Pour résoudre ce problème, la requête peut être modifiée pour reconvertir les données déchiffrées en chaîne de caractères :

SELECT *,
       CAST(AES_DECRYPT(first_name, 'usa2010') AS CHAR(50)) first_name_decrypt
FROM user
Copier après la connexion

La colonne first_name_decrypt contiendra désormais la chaîne d'origine, permettant aux utilisateurs d'afficher leurs données comme prévu.

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal