Page 1 of 1

MCrypt Encypt/Decrypt

Posted: Sat Jun 03, 2006 7:34 pm
by tecktalkcm0391
Can anyone tell me how to do the unencrypt part to this:

Code: Select all

<?php

$code='5g7h';
$key = "1234567890"; 
$input = $code; 
$td = mcrypt_module_open('tripledes', '', 'ecb', ''); 
$iv = mcrypt_create_iv (mcrypt_enc_get_iv_size($td), MCRYPT_RAND); 
mcrypt_generic_init($td, $key, $iv); 
$new_code = mcrypt_generic($td, $input); 
mcrypt_generic_deinit($td); 
mcrypt_module_close($td); 

?>
 I know to use mcrypt_decrypt, but I just can't figure it out!

Posted: Sat Jun 03, 2006 9:26 pm
by sweatje
Here is an example, using a SimpleTest test case to show it in action:

Code: Select all

function testMcryptFunctions() {
$iv = mcrypt_create_iv(mcrypt_get_iv_size(MCRYPT_TRIPLEDES, MCRYPT_MODE_ECB), MCRYPT_RAND);
$key = "1234567890";

$code='5g7h';
$new_code = mcrypt_encrypt(MCRYPT_TRIPLEDES, $key, $code, MCRYPT_MODE_ECB, $iv);

$this->assertNotEqual($new_code, $code);
$this->assertEqual($code, trim(mcrypt_decrypt (MCRYPT_TRIPLEDES, $key, $new_code, MCRYPT_MODE_ECB, $iv)));

}

Posted: Sat Jun 03, 2006 10:14 pm
by AKA Panama Jack
Here are two functions to encode and decode using mcrypt.

Code: Select all

DEFINE ("Keysize","f23r09aj09f3wqj90"); 

function encode($data) 
{
	$td = mcrypt_module_open (MCRYPT_TripleDES, "", MCRYPT_MODE_ECB, ""); 
	$iv = mcrypt_create_iv (mcrypt_enc_get_iv_size ($td), MCRYPT_RAND); 
	$encdata = mcrypt_ecb (MCRYPT_TripleDES,(Keysize), $data, MCRYPT_ENCRYPT, $iv); 
	$hextext=bin2hex($encdata); 
	return $hextext; 
}

function decode($data) 
{
	$td = mcrypt_module_open (MCRYPT_TripleDES, "", MCRYPT_MODE_ECB, ""); 
	$iv = mcrypt_create_iv (mcrypt_enc_get_iv_size ($td), MCRYPT_RAND); 
	$dectext = rtrim(mcrypt_ecb (MCRYPT_TripleDES,(Keysize), pack("H" . strlen($data), $data), MCRYPT_DECRYPT,$iv), "\0"); 
	return $dectext; 
} 

$test_string = "My Test";

echo "String to encode: " . $test_string . "<br>";

$encoded_data = encode($test_string);

echo "Encoded data: " . $encoded_data . "<br>";

$decoded_data = decode($encoded_data);

echo "Decoded data: " . $decoded_data . "<br>";
Change the Keysize define to any string of letters and numbers for your own private key. The $test_string and $decoded_data should match. The $encoded_data is the mcrypt encoded string.