HTMLpointHTMLpoint HTMLpoint.com


 Funciones relativas a la criptación



PHP ofrece a los programadores una serie de funciones para la criptación, ligadas a la biblioteca mcrypt. Esta biblioteca soporta muchísimos algoritmos de criptación, unos más utilizados que otros. Los algoritmos son:

  • DES
  • TripleDES
  • Blowfish
  • 3-WAY
  • SAFER-SK64
  • SAFER-Sk128
  • TWOFISH
  • TEA
  • RC2
  • GOST
  • RC6
  • IDEA

    Para funcionar con esta biblioteca, el PHP se tiene que haber redactado con la opción "--with-mcrypt".

    Los mandos fundamentales son cuatro, todos con la misma sintaxis:

  • mcrypt_cfb(): cipher feedback; codifica byte por byte;
  • mcrypt_cbc(): cipher block chaining: útil para el encoding de los archivos con un amplio márgen de seguridad;
  • mcrypt_ecb(): electronic codebook: utilizada para datos remotos en el que el nivel de seguridad no es altísimo;
  • mcrypt_ofb(): output feedback: parecido a cfb, pero cuida más de los errores.

    La sintaxis en general es:

    $encrypted = mcrypt_XXX(algoritmo, clave, input, encode/decode)

    en el que:

  • XXX es el método que se quiere utilizar (cfb, cbc, cfb o ofb);
  • algoritmo es el algoritmo que se quiere utilizar, con la sintaxis:
    MCRYPT_ALGORITMO
    Por ejemplo, se podría utilizar
    MCRYPT_BLOWFISH o MCRYPT IDEA
  • clave no es más que la clave con la que se van a criptar los datos;
  • input son los datos que hay que criptar;
  • encode/decode indica la función si se deben criptar o descriptar los datos. Por eso, se utilizan respectivamente:
    MCRYPT_ENCRYPT e MCRYPT_DECRYPT

    Vamos a ver un ejempo: si queremos criptar una cadena de texto con clave criptada "Mi clave" utilizando CFB con el algoritmo IDEA, tendríamos que escribir:

    $cadena = "Una cadena de texto";
    $chiave = "Mi clave";
    $encrypted = mcrypt_cfb(MCRYPT_IDEA, $clave, $cadena, MCRYPT_ENCRYPT);


    Todos los que quieran leer nuestros datos criptados ($encrypted) tendrán obviamente que conocer las claves, el método y el algoritmo utilizados. Por lo tanto, se podría escribir algo parecido a:

    $clave = "Mi clve";
    $cadena = mcrypt_cfb(MCRYPT_IDEA, $chiave, $encrypted, MCRYPT_DECRYPT);


    Su variable "$cadena", por lo tanto, incluirá "Una cadena de texto".

  •   Volver al inicio de la página