Problem decrypting data stored in MySQL using mcrypt

This is a discussion on Problem decrypting data stored in MySQL using mcrypt within the PHP Language forums, part of the PHP Programming Forums category; Hi All, I'm trying to implement encryption on certain data fields in my MySQL database and I'm experiencing ...


Go Back   Usenet Forums > PHP Programming Forums > PHP Language

FAQ Members List Calendar Search Today's Posts Mark Forums Read
  #1 (permalink)  
Old 01-23-2004
M Wells
 
Posts: n/a
Default Problem decrypting data stored in MySQL using mcrypt

Hi All,

I'm trying to implement encryption on certain data fields in my MySQL
database and I'm experiencing ongoing problems.

I seem to be able to encrypt the data without issues, but can't figure
out how to decrypt the data.

My field in my test table, in which I'm storing the encrypted data, is
a TEXT type field.

The code I'm using, from the PHP help file, is:

[ begin code ]

$key = "mysecretkey";
$input = "This is some plain text.";
$td = mcrypt_module_open ('tripledes', '', 'ecb', '');
$iv = mcrypt_create_iv (mcrypt_enc_get_iv_size ($td), MCRYPT_RAND);
mcrypt_generic_init ($td, $key, $iv);
$encrypted_data = mcrypt_generic ($td, $input);
$insq = "INSERT into test (entry) VALUES ('$encrypted_data')";
mysql_query($insq);
mcrypt_generic_deinit ($td);
mcrypt_module_close ($td);
$query = "SELECT entry from test";
$res = mysql_query($query);
$row = mysql_fetch_array($res);
mysql_free_result($res);
$et = $row["entry"];
$td = mcrypt_module_open ('tripledes', '', 'ecb', '');
$iv = mcrypt_create_iv (mcrypt_enc_get_iv_size ($td), MCRYPT_RAND);
mcrypt_generic_init ($td, $key, $iv);
$plain = mdecrypt_generic ($td, $et);
mcrypt_generic_deinit ($td);
mcrypt_module_close ($td);
echo "$input<p>$et<p>$plain<p>";

[ end code ]

The output from the echo statement, which I was expecting to be
<plaintext> <encrypted text> <decrypted plaintext>, is:

[ begin echo output]

This is some plain text.

#faÖŸdšK𳵚"‡Á¸•Š‹ßÐt£

#faÖŸdšK𳵚"‡Á¸•Š‹ßÐt£

[ end echo output ]

I assume some of the characters won't display properly in this post,
however I can verify that the <encrypted text> (line 2) and <decrypted
plaintext> (line 3) appear to be identical.

Can anyone give me an insight into what I'm doing wrong?

I'm using PHP version 4.3.4 and Apache 1.3.28 on WindowsXP, if these
are meaningful.

Any help will be immensely appreciated!

Much warmth,

Murray
http://www.planetthoughtful.org
Building a thoughtful planet,
One quirky comment at a time.
Reply With Quote
  #2 (permalink)  
Old 01-28-2004
Randell D.
 
Posts: n/a
Default Re: Problem decrypting data stored in MySQL using mcrypt


"M Wells" <planetquirky@planetthoughtful.org> wrote in message
news:bit210liidvt9vvcio7lrt1o937prf4vdb@4ax.com...
> Hi All,
>
> I'm trying to implement encryption on certain data fields in my MySQL
> database and I'm experiencing ongoing problems.
>
> I seem to be able to encrypt the data without issues, but can't figure
> out how to decrypt the data.
>
> My field in my test table, in which I'm storing the encrypted data, is
> a TEXT type field.
>
> The code I'm using, from the PHP help file, is:
>
> [ begin code ]
>
> $key = "mysecretkey";
> $input = "This is some plain text.";
> $td = mcrypt_module_open ('tripledes', '', 'ecb', '');
> $iv = mcrypt_create_iv (mcrypt_enc_get_iv_size ($td), MCRYPT_RAND);
> mcrypt_generic_init ($td, $key, $iv);
> $encrypted_data = mcrypt_generic ($td, $input);
> $insq = "INSERT into test (entry) VALUES ('$encrypted_data')";
> mysql_query($insq);
> mcrypt_generic_deinit ($td);
> mcrypt_module_close ($td);
> $query = "SELECT entry from test";
> $res = mysql_query($query);
> $row = mysql_fetch_array($res);
> mysql_free_result($res);
> $et = $row["entry"];
> $td = mcrypt_module_open ('tripledes', '', 'ecb', '');
> $iv = mcrypt_create_iv (mcrypt_enc_get_iv_size ($td), MCRYPT_RAND);
> mcrypt_generic_init ($td, $key, $iv);
> $plain = mdecrypt_generic ($td, $et);
> mcrypt_generic_deinit ($td);
> mcrypt_module_close ($td);
> echo "$input<p>$et<p>$plain<p>";
>
> [ end code ]
>
> The output from the echo statement, which I was expecting to be
> <plaintext> <encrypted text> <decrypted plaintext>, is:
>
> [ begin echo output]
>
> This is some plain text.
>
> #faÖYdsKð³µs"?Á¸.S<ßÐt£
>
> #faÖYdsKð³µs"?Á¸.S<ßÐt£
>
> [ end echo output ]
>
> I assume some of the characters won't display properly in this post,
> however I can verify that the <encrypted text> (line 2) and <decrypted
> plaintext> (line 3) appear to be identical.
>
> Can anyone give me an insight into what I'm doing wrong?
>
> I'm using PHP version 4.3.4 and Apache 1.3.28 on WindowsXP, if these
> are meaningful.
>
> Any help will be immensely appreciated!
>
> Much warmth,
>
> Murray
> http://www.planetthoughtful.org
> Building a thoughtful planet,
> One quirky comment at a time.


I can't see where you're going wrong - but if I were you, I'd concentrate on
getting the encryption/decryption working first, before doing anything with
the result to/from MySQL - I am a newbie at MySQL and I'm wondering if the
data being stored is different than that being recovered)... You could try
and do an md5 hash on the encrypted data send to and from the database and
compare them both - If the hashes are different, then the data you are
reading back might look the same ,but are different...

Thats about as much as I can suggest...


Reply With Quote
Reply
Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are Off
[IMG] code is Off
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are On




All times are GMT +1. The time now is 07:21 AM.


Powered by vBulletin® Version 3.7.3
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
Content Relevant URLs by vBSEO 3.0.0