2017-08-08 1 views
0

hier ist mein QUERYMit MYSQL AES_ENCRYPT Funktion mit PDO aber falsch und verschiedene String-Format

SELECT client_id,client_name,client_db_ip,client_db_username,AES_ENCRYPT(client_db_pass, '1234') as client_db_pass,client_db_name FROM client_list WHERE client_id =:id 

// konzentrieren pls auf AES_ENCRYPT (client_db_pass, '1234') als client_db_pass

jetzt, wenn ich direkt abfragen phpMyAdmin, ich werde das Ergebnis zB für client_db_pass nach AES_ENCRYPT erhalten:

501defc4013f3f21529c123f33c065ad 

Aber das Problem kommen, wenn iam PDO unter Verwendung der Daten zu holen,

 $Q = "SELECT client_id,client_name,client_db_ip,client_db_username,AES_ENCRYPT(client_db_pass, '1234') as client_db_pass,client_db_name FROM client_list WHERE client_id =:id"; 
    $R = $this->pdo->prepare($Q); 
    $R->bindParam(':id', $id); 
    $R->execute(); 
    $result = $R->fetch(PDO::FETCH_ASSOC); 

wenn ich var_dump ($ result)

ich dieses Ergebnis erhalten:

array (size=6) 
'client_id' => string '1' (length=1) 
'client_name' => string 'tester' (length=4) 
'client_db_ip' => string '127.0.0.2' (length=9) 
'client_db_username' => string 'root' (length=4) 
'client_db_pass' => string 'PïÄ??!Rœ?3Àe­' (length=16) 
'client_db_name' => string 'test_user' (length=9) 

können Sie sehen, das Feld für 'client_db_pass' string ist

result 2 = PïÄ??!Rœ?3Àe­ 

nicht

result 1 = 501defc4013f3f21529c123f33c065ad 

kann ich wissen, wie man Ergebnis 1 "501defc4013f3f21529c123f33c065ad" erhält, wenn man PDO benutzt?

dank

Antwort

0

AES_ENCRYPT() nach docs, gibt binäre Daten:

liefert eine binäre Zeichenfolge, die die verschlüsselten Ausgabe enthält.

Wenn Sie noch etwas in Ihrem MySQL-Client sehen, liegt das daran, dass der Client die rohe Ausgabe automatisch codiert.

In PHP können Sie einen hexadezimalen Speicherauszug mit z. bin2hex() und in MySQL können Sie es mit HEX() tun. Ich denke nicht, dass Sie es brauchen, sowohl MySQL als auch PHP behandeln binäre Programme.