Encrypt/Decrypt Credit Card Number

// July 29th, 2009 // Code Snippet

Menyimpan nomor credit card di dalam database tanpa terenkripsi sangat riskan. Memakai algoritma enkripsi satu arah juga akan sia-sia, karena kita akan menggunakan nomor tersebut. Setelah googling saya menemukan satu metode yang cukup powerful yang bisa digunakan untuk mengenkripsi/decrypt  nomor credit card yaitu mcrypt.

code ini untuk mengenkripsi saat akan menyimpan ke dalam database :

public static function cc_encrypt($string)
{
   $cipher_alg = MCRYPT_RIJNDAEL_128;
   $iv = mcrypt_create_iv(mcrypt_get_iv_size($cipher_alg, MCRYPT_MODE_ECB), MCRYPT_RAND);
   $encrypted_string = base64_encode(mcrypt_encrypt($cipher_alg, YOURKEY, $string, MCRYPT_MODE_CBC, $iv));
   $iv_encode = base64_encode($iv);
   return $encrypted_string.'_'.$iv_encode;
}

code ini untuk men-decrypt saat akan menggunakannya :

public static function cc_decrypt($encrypted_string)
{
   $cipher_alg = MCRYPT_RIJNDAEL_128;
   list($encrypted_string, $iv) = explode('_', $encrypted_string);
   $decrypted_string = mcrypt_decrypt($cipher_alg, YOURKEY, base64_decode($encrypted_string), MCRYPT_MODE_CBC, base64_decode($iv));
   $len = strlen($decrypted_string);
   $j = $len-1;
   while ($decrypted_string[$j] == "\0") $j--;
   $decrypted_string = substr($decrypted_string, 0, $j+1);
   return $decrypted_string;
}

Jangan lupa untuk mengganti konstanta YOURKEY dengan key anda. Gunakan key yang unique dan terdiri dari bermacam2 karakter.

Happy coding !

Leave a Reply