Algoritmos de encriptacion en PHP | ![]() ![]() ![]() ![]() (3.99)views: 7986 |
Algoritmos de encriptacion en PHP (One way)
Algoritmos de una sola via, una vez encriptado no se puede desencripar , lo que se suele hacer por general por ejem en un control de sesion de usuario es encriptar una clave y guardarla encriptada en la base de datos luego cuando el usuario ingresa una clave para loguearse esta se encripta y se compara con la almacenada en la base de datos si son iguales se le da acceso.
Para recuperar la clave en caso de perdida o lo que fuere ,simplemente se le genera una clave nueva.
* md5() - Uno de los mas usados , El MD5 genera, a partir de un texto de cualquier longitud,
una clave de 128 bits (32 caracteres) única para ese texto. Con sólo cambiar un carácter, se obtiene un valor muy distinto en el cálculo del MD5.
La clave que genera contiene siempre 32 caracteres, sin importar el largo del mensaje, el cual puede ser mayor o menor a 32 caracteres
Ejem:
<?php
echo 'Password: '.md5('hola'); //Password: 4d186321c1a7f0f354b297e8914ab240
?>
* SHA1() - Calcula el sha1 hash de una cadena, generando asi una clave de 160 bits (40 caracteres).
Es mas seguro que el md5 aunque para almacenamiento de contraseñas se utiliza con mayor frecuencia el anterior.
Es una version mejorada el algoritmo SHA (Secure Hash Algorithm)
<?php
echo 'Password: '.sha1('hola'); //Password: 99800b85d3383e3a2fb45eb7d0066a4879a9dad0
?>
* sha1_file() - Calcula el sha1 de un archivo, muy util para no tener que estar abriendo archivos para encriptarlos simplemente se llama la funcion y listo , el resultado es el mismo que el sha1
<?php
echo 'File Hash: '.sha1_file('t.php') // File Hash: c8950f3a13b91e60c819406cccdc7bb7c585fd18
?>
* crc32() - Calcula el crc32 polinomial de una cadena
La comprobación de redundancia cíclica (CRC) es un tipo de función que recibe un flujo de datos de cualquier longitud como entrada y devuelve un valor de longitud fija como salida.
Esta funcion se usa por lo general para validar la integridad de los datos que seran trasmitidos o que seran almacenados, lo que se suele hacer es generar el crc32 de un texto antes de enviarlo luego se envia por la web o por donde sea el texto + la clave crc32, al llegar a destino se reciben los dos, se aplica nuevamente esta funcion al texto y si la clave generada coincide con la clave crc32 generada inicialmente, el mensaje es correcto, caso contrario se solicita la retrasmision.
El término suele ser usado para designar tanto a la función como a su resultado.
<?php
print 'crc: '.crc32('Mensaje a enviar'); //crc: 679863892
?>
* hash() - Genera un valor hash
* crypt - Retorna una clave encriptada utilizando el estandar Unix Basado en encriptación DES o alternando algoritmos disponibles en el sistema operativo.
<?php
print crypt('hola'); // $1$2o3L0Ym.$2GgYu7rpuaOhHZaBVRY0E0
?>
Algoritmos Simetricos ( Encriptación y Desencriptación)
Queda pendiente la explicacion y los ejemplos para mas adelante, igualmente dejo algunos links donde se pueden bajar los dos mas conocidos que son el RSA y el DES
RSA
código: http://archives.neohapsis.com/archives/php/2002-03/att-0005/61-rsa.php
DES
código: http://www.tero.co.uk/des/test.php
IDEA
Hash
De que depende elegir un algoritmo u otro ?
Bueno depende del problema que quieras resolver, los algorimos mas seguros por lo general son los mas lentos, y los menos seguros los mas rápidos, la idea es
buscar uno que cumpla con las espectativas de seguridad que requiera tu página.
buscando en la web encontré en php.net , una comparacion de las velocidades de algoritmos
Resultados: (in microsegundos)
1. md4 5307.912
2. md5 6890.058
3. crc32b 7298.946
4. crc32 7561.922
5. sha1 8886.098
6. tiger128,3 11054.992
7. haval192,3 11132.955
8. haval224,3 11160.135
9. tiger160,3 11162.996
10. haval160,3 11242.151
11. haval256,3 11327.981
12. tiger192,3 11630.058
13. haval128,3 11880.874
14. tiger192,4 14776.945
15. tiger128,4 14871.12
16. tiger160,4 14946.937
17. haval160,4 15661.954
18. haval192,4 15717.029
19. haval256,4 15759.944
20. adler32 15796.184
21. haval128,4 15887.022
22. haval224,4 16047.954
23. ripemd256 16245.126
24. haval160,5 17818.927
25. haval128,5 17887.115
26. haval224,5 18085.002
27. haval192,5 18135.07
28. haval256,5 18678.903
29. sha256 19020.08
30. ripemd128 20671.844
31. ripemd160 21853.923
32. ripemd320 22425.889
33. sha384 45102.119
34. sha512 45655.965
35. gost 57237.148
36. whirlpool 64682.96
37. snefru 80352.783
38. md2 705397.844
1 2 3 4 5
Comentarios:
|
bueno en particular les doy las gracias por que me sacaron de un aprieto |
2010-01-06
|
| anmy_23@hotmail.com |
|
Excelente post! |
2010-09-13
|
|
Muy bueno aunque falto lo de asimetricos un 8 de 10 |
2011-01-29
|
|
Gracias, el aporte es magnifico y muy util para los programadores |
2011-02-05
|
|
muy buen aporte gracias |
2011-06-03
|
|
muy bueno |
2011-07-21
|
|
Muy bueno, +5 :) |
2011-07-31
|
|
wena wena la raja yo encripto las pass dos veces y qedean filete imaginate si la desencriptan ven lo mismo y quedan locos. intentenlo es la zorra esta cosa de php y ajax |
2011-08-12
|
|
Muy Bueno y muy detallado, gracias |
2011-10-13
|
|
Muy bueno! +10 :D |
2011-10-15
|
|
excelente post gracias |
2011-12-15
|


(3.99)