2016-07-19 18 views
3

Ich möchte die ursprüngliche Zeichenfolge zu verschlüsseln, nachdem ich auf encrypt button klicken und Eingaben Element wird nicht gelöscht, und nachdem ich auf decrypt klicken, wird es decrypt. Mein Problem ist, nachdem ich auf die decrypt klicken, gibt es keinen Wert zu decrypt nur die Verschlüsselung bewegt sich. Kann mir jemand dabei helfen?Verschlüsseln und Entschlüsseln AES

Hier ist der Ausgang, nachdem ich auf decrypt geklickt habe.

Hier ist mein Code.

<?php 
/* 
* PHP mcrypt - Basic encryption and decryption of a string 
*/ 
error_reporting(E_ALL^E_NOTICE); 
$secret_key = "thisismykey12345"; 
$iv = mcrypt_create_iv(mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_ECB), MCRYPT_RAND); 

if(isset($_POST['encrypt'])){ 
    $string = $_POST['ostring']; 

$encrypted_string = mcrypt_encrypt(MCRYPT_RIJNDAEL_256, $secret_key, $string, MCRYPT_MODE_CBC, $iv); 

} 
else if(isset($_POST['decrypt'])){ 
    $decrypted_string = mcrypt_decrypt(MCRYPT_RIJNDAEL_256, $secret_key, $encrypted_string, MCRYPT_MODE_CBC, $iv); 

} 

?> 
<!DOCTYPE html> 
<html> 
<head> 
    <title></title> 
</head> 
<body> 
<form method="post"> 
Original String <input type="text" name="ostring" value="<?php echo $string; ?>"><br> 
<input type="submit" name="encrypt" value="Encrypt"><br> 
Encrypted String <input type="text" style="width:500px;" name="encrypted" value="<?php echo $encrypted_string; ?>"><br> 
<input type="submit" name="encrypt" value="Decrypt"><br> 
Decrypted String <input type="text" style="width:500px" name="decrypted" value="<?php echo $decrypted_string; ?>"><br> 
</form> 
</form> 
</body> 
</html> 
+0

ist das Problem jedes Mal, wenn Sie eine beliebige Taste einreichen getroffen Ihre gesamten Daten werden erneut gesendet und die verschlüsselte Zeichenfolge wird wieder und wieder neu geschrieben –

+0

Die Leute reagieren nicht, traurig. –

Antwort

1

Dieser Teil hat zwei logische Fehler:

if(isset($_POST['encrypt'])){ 
    $string = $_POST['ostring']; 
    $encrypted_string = ...; 
} 
else if(isset($_POST['decrypt'])){ 
    $decrypted_string = ...$encrypted_string...; 
} 
  1. $decrypted_string wird nie gesetzt werden, weil es auf $encrypted_string beruht. Aber $encrypted_string ist nur vorhanden, wenn der Ausführungspfad in den ersten if Block eintritt und den elseif Block überspringt.
  2. Außer Ihnen nie überprüfen, ob ostring obwohl vor der Verschlüsselung verfügbar ist es

die beiden Ausführungspfade in separaten if Blöcke Put erforderlich ist:

if(isset($_POST['encrypt'],$_POST['ostring'])){ 
    $encrypted_string = ...; 
} 

if(isset($_POST['decrypt'],$encrypted_string)){ 
    $decrypted_string = ...; 
}