Tengo una encriptación en unas tarjetas magnéticas que me gustaría saber como funciona, y como lograr encriptar de la misma manera:
Coloco ejemplos del código encriptado que viene en cada tarjeta magnética y a su derecha el numero que me imprime al pasar la tarjeta por el programa que las lee.
ENCRIPTADO ------------> DESENCRIPTADO
Código :
CPDOENFMGLHKIJJINKTOPIQHVKXKZK -> 0383 CPDOENFMGLHKIJJINKUPPITKUJPCZK -> 0393 CPDOENFMGLHKIJJIQNNIRKSJSHVIWH -> 0625 CPDOENFMGLHKIJJINKTORKNEQFSFVG -> 0385 CPDOENFMGLHKIJJINKTOSLVMSHUHXI -> 0386 CPDOENFMGLHKIJJINKUPNGNEPEVIUF -> 0391 CPDOENFMGLHKIJJINKUPQJRIWLSFSD -> 0394 CPDOENFMGLHKIJJINKSNQJWNODYLRC -> 0374 CPDOENFMGLHKIJJINKUPUNULWLRETE -> 0398
Al momento solo logre resolver lo siguiente, si uno los separa por pares nos queda así:
CP DO EN FM GL HK IJ JI NK TO PI QH VK XK ZK (que esto significa 383)
si se dan cuenta en la parte de en medio tenemos "IJ JI" si nos basamos que es un código numérico, contamos los espacio que hay entre letra y letra según el abecedario, ejemplo entre A y B es 1 | entre A y C es 2:
IJ = 1
JI = -1
A PARTIR DE AHI LES DAMOS LOS SIGUIENTES VALORES A TODO:
CP DO EN FM GL HK IJ JI NK TO PI QH VK XK ZK
Esta primera parte son puros 0 (ceros)
escribió:
Código :
13 11 9 7 5 3 1 //Espacios entre letra y letra CP DO EN FM GL HK IJ //encriptado //Que significa: 0 0 0 0 0 0 0
Esta segunda parte contiene el código que esta encriptado que es el numero 383
escribió:
Código :
-1 -3 -5 -7 //espacio entre letra y letra según abecedario JI NK TO PI //Que significa: 0 3 8 3
Esta ultima parte me da numeros que no tienen sentido para mi pues no concuerda a mi parecer y es lo que quiero descifrar, primero pensé que eran numeros al azar pues según yo no tienen ninguna continuidad pero al programar un PHP (colocado al final del post) que me fábrica la codificación según el numero que le pongas y los últimos 4 dígitos que me los diera random no me lee el programa la codificación me dice que es incorrecta.
escribió:
Código :
9 11 13 15 QH VK XK ZK //Esta es la parte que no he logrado descifrar
Bueno espero me haya entendido, cualquier duda coloco el php que construí para codificar los primeros 11 dígitos y la cola aleatoria de los últimos 4.
Código PHP :
<? $max = 5; $inicio = 3; $letras = array(C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z); //ACA VA EL INGRESO DE LOS NUMEROS con la variable convertir $convertir = 0834; //Cola Algoritmo $cola = rand(1001,9999); $digitos = strlen($convertir); if($digitos>=$max){ echo "es imposible convertir un numero tan grande";}else{ $rellenar = str_pad($convertir, 11, "0", STR_PAD_LEFT); $rellenar = $rellenar.$cola; $digitosRellenar = strlen($rellenar); $conteodeLetras = 0; $AlgoritmoInicial = 13; echo "%"; for ($i=0;$i<$digitosRellenar;$i++){ $sumaConteo = $conteodeLetras+$rellenar[$i]; $digitosaletras[] = $letras[$sumaConteo]; echo $digitosaletras[$i]; //segunda letra $sumaSegunda = $sumaConteo + $AlgoritmoInicial; $Segundodigitosaletras[] = $letras[$sumaSegunda]; echo $Segundodigitosaletras[$i]; $conteodeLetras++; $AlgoritmoInicial --; $AlgoritmoInicial --; } echo "_"; } ?>