Principal


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
 


Cómo Calificas este artículo?:
1 2 3 4 5


Los que entraron en este post también vieron:


Comentarios:

 angie dice:
bueno en particular les doy las gracias por que me sacaron de un aprieto
2010-01-06
anmy_23@hotmail.com
 jairo dice:
Excelente post!
2010-09-13
 webcol.net dice:
Muy bueno aunque falto lo de asimetricos un 8 de 10
2011-01-29
 Jose dice:
Gracias, el aporte es magnifico y muy util para los programadores
2011-02-05
 yo dice:
muy buen aporte gracias
2011-06-03
 eed dice:
muy bueno
2011-07-21
 Martin dice:
Muy bueno, +5 :)
2011-07-31
 php al dia dice:
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
 cesarer dice:
Muy Bueno y muy detallado, gracias
2011-10-13
 Geek dice:
Muy bueno! +10 :D
2011-10-15
 ivan dice:
excelente post gracias
2011-12-15

Agregar Comentario:


Nombre:                       Valoración:
Comentario:
E-mail:(opcional)

Copie el texto: