Crittografia e la decrittografia carta di credito utilizzando PHP Modulo Mcrypt

vengono presentate le funzioni di crittografia e la decrittografia. Scorrere il numero della carta di credito nella stringa di formato per la funzione encryptCard e ottenere il codice criptato che può memorizzare in modo sicuro nel database. La cosa importante qui è KEY . Definire una stringa segreta come chiave $ valore necessario per decodificare i dati indietro al valore originale.

Funzione encryptCard ($ creditno) {
$ = chiave ‘YOURSECRETKEY’; // Cambiare la chiave qui
$ TD = mcrypt_module_open ( ‘TripleDES’, ”, ‘CFB’, ”);
srand ((doppia) microtime () * 1000000);
$ = iv mcrypt_create_iv (mcrypt_enc_get_iv_size ($ td), MCRYPT_RAND);
$ Okey = substr (md5 ($ key.rand (0, 9)), 0, mcrypt_enc_get_key_size ($ td));
mcrypt_generic_init ($ td, $ okey, $ iv);
$ criptato = mcrypt_generic ($ td, $ creditno.chr (194));.
$ codice = $ $ iv cifrato;
$ codice = eregi_replace ( ” ‘”, “‘” $ codice); codice di ritorno
$;
}

funzione decryptCard ($ codice) {
$ = chiave ‘YOURSECRETKEY’; // Utilizzare la stessa chiave utilizzata per crittografare i dati
$ TD = mcrypt_module_open ( ‘TripleDES’, ”, ‘CFB’, ”);
$ IV = substr ($ codice, -8);
= $ substr criptato ($ codice, 0, -8);
for ($ i = 0; $ i <10; $ i ++) {
$ okey md5 = substr ($ key ($ i), 0, mcrypt_enc_get_key_size ($ td).);
mcrypt_generic_init ($ td, $ okey, $ iv);
$ decifrato = trim (mdecrypt_generic ($ td, $ criptato));
mcrypt_generic_deinit ($ TD);
$ txt = substr ($ decifrato, 0, -1);
if (ord (substr ($ decifrato, -1)) == 194 && is_numeric ($ txt)) break;
}
mcrypt_module_close ($ TD);
return $ txt;
}

suggerire la memorizzazione dei dati crittografati in un campo BLOB nel vostro database MySQL, che è simile a una stringa di testo, ma archivi BLOB di testo come dati binari. Classificazione e confronto viene eseguita in modo maiuscole e minuscole per i valori BLOB e moda tra maiuscole e minuscole per i valori di testo. valori BLOB hanno alcun set di caratteri e l’ordinamento e confronto sono basati sui valori numerici dei byte in valori di colonna. Pertanto, scontro diretto catena non è possibile in un campo BLOB.