eMc2H 5 - Desencriptacion de Base 64
Introduccion
Base64 es un codigo de encriptacion que se usa para cifrar contraseñas, por ejemplo en algunas bases de datos, y demas. Este sistema de cifrado es muy sencillo y no hace falta saber mucho sobre el tema para poder descifrar una contraseña en base64.
Sin mas comenzamos como hacerlo.
Valor decimal de cada caracter:
Cada caracter en base64 equivale a un valor decimal. Este valor decimal se saca de la tabla del alfabeto base64:
Caracter Valor decimal Caracter Valor decimal
A 0 a 26
B 1 b 27
C 2 c 28
D 3 d 29
E 4 e 30
F 5 f 31
G 6 g 32
H 7 h 33
I 8 i 34
J 9 j 35
K 10 k 36
L 11 l 37
M 12 m 38
N 13 n 39
O 14 o 40
P 15 p 41
Q 16 q 42
R 17 r 43
S 18 s 44
T 19 t 45
U 20 u 46
V 21 v 47
W 22 w 48
X 23 x 49
Y 24 y 50
Z 25 z 51
Caracter numerico Valor
0 52
1 53
2 54
3 55
4 56
5 57
6 58
7 59
8 60
9 61
Llegados a este punto comencemos con el ejemplo
Supongamos que nos hemos encontrado con esta contraseña cifrada en base 64... "cGEz3dk" (Sin comillas), y nos ha entrado la tentacion de saber de que se trata. Pues vamos con el primer paso... el valor decimal del caracter en base 64. Sustituimos cada caracter por el valor correspondiente. Para lo cual acudimos a la tabla anterior.
c 28
G 6
E 5
z 51
3 55
d 29
k 36
De momento es sencillo no???
Pues vamos con el siguiente paso...
Conversion de base64 a binario
Los valores decimales que hemos obtenido hemos de pasarlo a binario.
Como convertir a binario??? Vamos con el ejemplo de antes...
Cojemos el numero 28 (El equivalente del caracter "c" en base64). Y comenzamos a dividirlo entre dos. Despues el resultado de la division se vuelve a dividir entre dos hasta que en el resultado quede "0" o "1".
Veamos...
28 /2
0 14 /2
0 7 /2
1 3 /2
1 1
Con esto hemos conseguido obtener el numero binario del valor 56. Donde esta el numero binario??? Pues en los restos de las divisiones: Empezando por el ultimo resultado: "1" y siguiendo en los restos el binario queda asi: "11100".
Este numero binario siempre tiene que ser de 6 digitos, por lo que si alguna vez haceis el binario y os da como resultado un numero con menos de seis digitos... como es en el caso de "28" añadimos tantos ceros como sean necesarios hasta que se completen los 6 digitos. En el ejemplo solo hace falta uno... pues se pone y el binario queda de esta manera: "011100"
Otra forma mas sencilla de calcular los binarios es usando la calculadora que trae windows, por ejemplo. Usandola en modo cientifico, y cambiando los modos... de decimal (Dec) a binario (Bin).
El ejemplo continua y obtenemos los siguientes numeros binarios
28 011100
6 000110
5 000101
51 110011
28 011100
55 110111
29 011101
36 100100
Conversion de 6 a 8 bits...
El siguiente paso consiste en transformar las cadenas de numeros binarios de 6 bits a 8 bits. Esto consiste que en vez de tener las cadenas 6 digitos, tengan 8.
Para ello ponemos todos los numeros seguidos, pero en orden de aparicion.
011100000110000101110011011100110111011101100100
Y ahora, por orden, separando de derecha a izquierda, hacemos grupos de numeros de una longitud de 8 digitos (8 bits).
01110000 01100001 01110011 01110011 01110111 01100100
De nuevo a valor decimal ...
Ahora, con nuestros numeros de 8 bits, los transformamos de nuevo a numeros decimales. Para convertir numeros binarios a decimales, podemos usar de nuevo la calculadora... que es mas sencillo o podemos seguir este metodo:
Multiplicamos cada miembro del numero binario por "2", y ese "2" elevado a la posicion que ocupe el numero que se esta multiplicando. Esto se ve mejor con un ejemplo: Cojemos el primer numero binario que tenemos " 01110000" y le aplicamos el metodo...
0*2^7 + 1*2^6 + 1*2^5 + 1*2^4 + 0*2^3 + 0*2^2 + 0*2^1 + 0*2^0 = 112
Para ver mejor como se ha hecho esto voy a explicarlo un pokillo:
- El numero es 01110000
- El primer valor "0" (el de la izquierda) ocupa la posicion 7
- El ultimo valor "0" (el de la derecha) ocupa la posicion 0
Cada numero ocupa una posicion dentro del numero ...
Cada numero se multiplica por "2", pero ese "2" estara exponenciado (Elevado) a la posicion que ocupe el numero que se esta multiplicando por "2". Asi el primer numero ("0"), que ocupa la posicion "7" esta multiplicado por "2^7" --> Dos elevado a siete.
Estos son los resultado del ejemplo
01110000 112
01100001 97
01110011 115
01110011 115
01110111 119
01100100 100
De numero decimal a codigo ascii
Este ya es el ultimo paso que hay que dar para finalizar el descifrado de base64. Consiste en convertir el numero decimal obtenido a su valor en la lista de codigo ascii.
Asi el valor 112 equivale a "P" en ascii
97 "a"
115 "s"
115 "s"
119 "w"
100 "d"
Con lo que la contraseña encriptada como "cGEz3dk" queda en "Passwd"
Nota: Todo esto diferencia las letras en mayuscula y las letras en minuscula.. con lo que hay que tener especial cuidado con ese tema.
Despedida
Bueno... como habeis podido comprobar, base64 es un codigo bastante facil de desencriptar, encriptar ... y con unas nociones basicas de matematicas se puede llevar a cabo.
Este texto puede ser usado por cualquier persona, pero siempre y cuando no se modifique nada de lo que hay aqui escrito sin consulta previa con el autor.
Espero os haya gustado, como me ha gustado a mi xDD
AmBoLiUs, 2003 para eMc2H magazine.