RE: [PHP] Maths not working.. or is it me?
| From: | Ford, Mike [LSS] | Date: | Thu, 15 Apr 2004 11:18:55 +0000 |
| Subject: | RE: [PHP] Maths not working.. or is it me? | ||
| Groups: | php.general | ||
| Request: | Send a blank email to php-general+get-183441@lists.php.net to get a copy of this message | ||
On 15 April 2004 10:59, Tristan.Pretty@risk.sungard.com wrote:
> Im trying to implement some really simply credit card encryption...
> I know it's not perfect, but it's a stop gap measure until I do this
> properly... however...
>
> To Encrypt before I put into my DB, I'm using this formula...
> $encrypt = $CardNumber / ($ExpiryYear * 41.9);
> (41.9 is just a random No to help encrpt the data)
>
> To see the correct credit card No later, I'm using this formula:
> $decrypt = $row[encryptedno] * $row[expiryyear] * 41.9;
>
> The credit car No I'm testing with is:
> 1234123412341234
> and the Exp year is 2008
>
> However, I keep getting this result...
> 1.2341234123412E+15
>
> What on earth am I doing wrong?
Trying to express your credit card number as an integer or a float, instead
of a string. On a 32-bit architecture, an integer can't hold a number that
big -- and a float can probably only express about 14 significant digits, so
that's no good either. Subject to those restrictions, the result you're
getting is a correct floating point representation of your original number,
so your maths is fine.
You'd be better off keeping your CC number as a string and using one of the
string encodings or encryptions.
Cheers!
Mike
---------------------------------------------------------------------
Mike Ford, Electronic Information Services Adviser,
Learning Support Services, Learning & Information Services,
JG125, James Graham Building, Leeds Metropolitan University,
Beckett Park, LEEDS, LS6 3QS, United Kingdom
Email: m.ford@leedsmet.ac.uk
Tel: +44 113 283 2600 extn 4730 Fax: +44 113 283 3211