2009-12-16 8 views
2

Je le Classs de cryptage suivantes en phpEncrypting Querystring et décryptant en PHP

define(ENCRYPTION_KEY,"abcdegef"); 
define(INITIALIZATION_VECTOR,mcrypt_create_iv(mcrypt_get_iv_size(MCRYPT_DES, MCRYPT_MODE_ECB), MCRYPT_RAND)); 

function EncryptString($input) 
{ 
    $encrypted_string = mcrypt_encrypt(MCRYPT_DES, ENCRYPTION_KEY, $input, MCRYPT_MODE_CBC, INITIALIZATION_VECTOR); 
    return base64_encode($encrypted_string); 
} 

function DecryptString($encryptedInput) 
{ 
    $decrypted_string = mcrypt_decrypt(MCRYPT_DES, ENCRYPTION_KEY, base64_decode($encryptInput), MCRYPT_MODE_CBC, INITIALIZATION_VECTOR); 
    return $decrypted_string; 
} 

Et avoir url sur l'étiquette d'ancrage avec querystring que je CHIFFREMENT

<a href="SomePage.php?action=<?php include_once ('EncryptionLibrary.php'); 
echo EncryptString("IamData"); ?> 

Quand je suis essayer de le décrypter sur SomePage.php en utilisant le code suivant .. Je reçois la valeur décryptée incorrecte

if (isset($_GET["action"])) 
{ 
     echo trim(DecryptString($_GET["action"])); 
} 
+0

Je CHIFFREMENT par » –

Répondre

2

La valeur de INITIALIZATION_VECTOR est différente à chaque fois. Pour les modes qui utilisent un IV, vous avez besoin du même pour le cryptage et le décryptage.

+0

alors comment faire ? –

+0

Options. (a) Utilisez un mode (comme EBC) qui n'utilise pas de IV. (b) Envoyer le IV à la page (il n'a pas besoin d'être secret). (c) Créer l'IV une fois, à la main. Hardcode it [*], peut-être en utilisant serialize et unserialize. [*] Je n'arrive pas à croire que je vous conseille de coder des données en dur. Ne dites à personne que j'ai dit ça. –