Heim >Datenbank >MySQL-Tutorial >Warum kann ich verschlüsselte Daten in MySQL nicht entschlüsseln?

Warum kann ich verschlüsselte Daten in MySQL nicht entschlüsseln?

Susan Sarandon
Susan SarandonOriginal
2024-11-19 03:20:02732Durchsuche

Why Can't I Decrypt Encrypted Data in MySQL?

Verschlüsselte Daten können in MySQL nicht entschlüsselt werden

In MySQL wird die Funktion AES_ENCRYPT() zum Verschlüsseln von Daten verwendet, während dies bei AES_DECRYPT() der Fall ist Wird zum Entschlüsseln der verschlüsselten Daten verwendet. Bei der Abfrage verschlüsselter Daten können Benutzer jedoch auf ein Problem stoßen, bei dem die entschlüsselten Daten nicht sichtbar sind.

Um dieses Problem zu beheben, ist es wichtig zu verstehen, dass AES_ENCRYPT() eine Binärzeichenfolge zurückgibt, während AES_DECRYPT() die zurückgibt Originalsaite. Daher muss bei der Auswahl verschlüsselter Daten das entschlüsselte Ergebnis explizit in eine Zeichenfolge zurückkonvertiert werden.

Betrachten Sie beispielsweise die folgende Tabelle:

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;

Daten können in die Tabelle eingefügt werden unter Verwendung der Funktion AES_ENCRYPT():

INSERT INTO user (first_name, address) VALUES (AES_ENCRYPT('Obama', 'usa2010'), AES_ENCRYPT('Obama', 'usa2010'));

Bei der Abfrage der verschlüsselten Daten zeigt die folgende Abfrage jedoch nicht das Original an string:

SELECT AES_DECRYPT(first_name, 'usa2010'), AES_DECRYPT(address, 'usa2010') FROM user;

Stattdessen ist das entschlüsselte Ergebnis eine binäre Zeichenfolge, die nicht sichtbar ist. Um dieses Problem zu beheben, kann die Abfrage geändert werden, um die entschlüsselten Daten wieder in eine Zeichenfolge umzuwandeln:

SELECT *,
       CAST(AES_DECRYPT(first_name, 'usa2010') AS CHAR(50)) first_name_decrypt
FROM user

Die Spalte „first_name_decrypt“ enthält jetzt die ursprüngliche Zeichenfolge, sodass Benutzer ihre Daten wie erwartet anzeigen können.

Das obige ist der detaillierte Inhalt vonWarum kann ich verschlüsselte Daten in MySQL nicht entschlüsseln?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn