On my current project I am saving personal info into a MySQL database
for later retrieval.  I have discovered that I have trouble with a few
specific data entries, though the other ~20 work fine.  The two I have
trouble with are a char(2) and a varchar(4) field, the smallest ones in the
table, and they return garbage when decrypted.  Is there a minimum field
size for using mcrypt?  Sample code:

// to encrypt, init once
$mykey = 'keytext';
$td = mcrypt_module_open(MCRYPT_TRIPLEDES,'', MCRYPT_MODE_ECB, '');
$iv = mcrypt_create_iv(mcrypt_enc_get_iv_size($td), 1234567890);
$ks = mcrypt_enc_get_key_size ($td);
$key = substr(md5($mykey), 0, $ks);
mcrypt_generic_init($td, $key, $iv);
(...)
$CreditCardExpMonth = mcrypt_generic($td, $_POST['Credit_Card_Exp_Month']);
(...)
// then save to database as part of insert query

    If I save/retrieve the fields to/from the database w/o encryption they
save & retrieve fine.  This field is two digits ('02', '11', etc.).  The
other is the year (4 digits).

// to decrypt
// I wrote a function to truncate the returned string at the
// first \0 since mcrypt's decrypt pads the result
echo mydecrypt($data['CCExpMonth']);

function mydecrypt($enc) {
  global $td;
  $str = mdecrypt_generic($td, $enc);
  $pos = strpos($str, "\0");
  if ($pos !== false) {
    $str = substr($str, 0, $pos);
  }
  return $str;
}

    Also as long as I'm posting, mcrypt_generic_deinit() seems to be
undefined on my system?  Is that an mcrypt issue or an interaction between
PHP 4.1.2 and mcrypt 2.4.x?

 - Steve Yates
 - Do trees moving back and forth make the wind blow?

~ Taglines by Taglinator - www.srtware.com ~




-- 
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to