30. maj 2005 - 16:12Der er
11 kommentarer og 1 løsning
AES_Decrypt virker ikke helt for mig
Hej,
Jeg har en krypteret streng (128bit krypteret vha det indbyggede AES_ENCRYPT i mySQL) som indholde mange forskelllige tegn som fx " og ' - Dette er meget ubelejligt, da jeg så får problemer når disse konflikter med " og/eller ' i selve sql-strengen ...
Eks:
$resultat = mysql_query("SELECT AES_DECRYPT('$crypted','$key') as decrypt") or die(mysql_error());
Jeg har prøvet med { } (muligvis de forkerte steder så?) Men ligefedt virker det .. Den siger "bare":
You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '\'I!¿C·"ª];GÎN’n„_“' at line 1
Jeg mener hvilken query du rent faktisk kører, når de to variabler bliver indsat :) - men okay, du vil vel gerne holde key'en for dig selv :)
Dog kan du hex'e den i php og unhex'e den i mysql - det er nok det smarteste :)
function hexify($s) { return join("",array_map(create_function('$a','return dechex(ord($a));'),preg_split("//",$s,-1,PREG_SPLIT_NO_EMPTY))) } $resultat = mysql_query("SELECT AES_DECRYPT(UNHEX('".hexify($crypted)."'),'$key') as decrypt") or die(mysql_error());
(og en lille hexify funktion, da jeg ikke kunne finde den i manualen - måske den findes)
You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '('4921bf43b722aa5d3b47ce4e926e845f693021362cb46fb5769a350f0102b
Og jeg har endda prøvet at koge det ned til dette:
$crypted = hexify($crypted); $resultat = mysql_query("SELECT UNHEX('$crypted') as decrypt") or die(mysql_error());
Det er ligesom UNHEX ikke virker .. Hvis jeg for sjov prøver at skrive "HEX" istedet, så virker det fint .. Hva gør jeg galt? Er det fordi "crypted" ikke er en valid HEX-kode?
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.