2013-05-15 5 views
18

habe ich BenutzertabelleWie AES_ENCRYPT und AES_DECRYPT in mysql verwenden

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; 

ich eine Zeile eingefügt:

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

diese Zeile wählen i verwendet:

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

Ich bin das folgende Ergebnis erhalten. Was ich tun muss, sehen meine Daten. Keine Daten sind für mich sichtbar.

I am unable to see my data

+1

hier arbeiten http://www.sqlfiddle.com/#!2/31323/2 –

+0

Aber warum ich bekomme das.Ist es einen Grund – PSR

+0

welche Version von MySQL verwenden Sie? –

Antwort

26

Laut Handbuch:

AES_ENCRYPT() verschlüsselt einen String und gibt einen Binär-String. AES_DECRYPT() entschlüsselt die verschlüsselte Zeichenfolge und gibt die ursprüngliche Zeichenfolge zurück.

Ich weiß nicht, warum es immer noch eine binäre Zeichenfolge in Ihrem Fall zurückkehrt. Wie auch immer, versuchen Sie dies:

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

Und verwenden first_name_decrypt statt first_name.

+0

Macht dasselbe auf unserem Server (5.5) –

7

Von mysql Kommandozeilen-Client gibt es keine Notwendigkeit CAST zu verwenden:

mysql> SELECT AES_DECRYPT(AES_ENCRYPT('admin','abc'),'abc'); 

+-----------------------------------------------+ | AES_DECRYPT(AES_ENCRYPT('admin','abc'),'abc') | +-----------------------------------------------+ | admin | +-----------------------------------------------+ 1 row in set (0.00 sec)

mysql> SELECT CAST(AES_DECRYPT(AES_ENCRYPT('admin','abc'),'abc') AS CHAR (50)); 

+------------------------------------------------------------------+ | CAST(AES_DECRYPT(AES_ENCRYPT('admin','abc'),'abc') AS CHAR (50)) | +------------------------------------------------------------------+ | admin | +------------------------------------------------------------------+ 1 row in set (0.02 sec)

Wie Sie sehen können in der Befehlszeile mit Guss wenig langsamer ist . Aber ich habe bemerkt, dass wenn Sie einige Tools wie phpmyadmin verwenden, dann müssen Sie CAST verwenden, sonst wird das Ergebnis falsch sein.

Verwandte Themen