Funciones php para codificar textos

En programación ya sea php u otro lenguaje es muy útil y aconsejable usar textos codificados para determinadas funcionalidades de seguridad.
Php nos ofrece una serie de funciones para encriptar y crear un hash a partir de una cadena de texto.

crypt()

Funcion para para crear un hash de una cadena. Por defecto usa el algoritmo básico DES-based o un algoritmo alternativo que haya disponible en el sistema. Muchas veces suele tomar algoritmos basados en md5.

Ejemplo de uso:

<?php
$password = 'mi_password';
$hash = crypt($password);
?>

sha1

Calcula el hash sha1 de un string. Utiliza el algoritmo Secure Hash Algorithm 1 (SHA1). SHA-0 y SHA-1 producen una salida resumen de 160 bits (20 bytes) de un mensaje que puede tener un tamaño máximo de 264 bits, y se basa en principios similares a los usados por el profesor Ronald L. Rivest del MIT en el diseño de los algoritmos de resumen de mensaje MD4 y MD5.

Algunos datos de interés:

La resistencia del algoritmo SHA-1 se ha visto comprometida a lo largo del año 2005. Después de que MD5, entre otros, quedara seriamente comprometido en el 2004 por parte de un equipo de investigadores chinos, el tiempo de vida de SHA-1 quedó visto para sentencia.
El mismo equipo de investigadores chinos, compuesto por Xiaoyun Wang, Yiqun Lisa Yin y Hongbo Yu (principalmente de la Shandong University en China), ha demostrado que son capaces de romper el SHA-1 en al menos 269 operaciones, unas 2000 veces más rápido que un ataque de fuerza bruta (que requeriría 280 operaciones). Los últimos ataques contra SHA-1 han logrado debilitarlo hasta 263.

Ejemplo de uso:

<?php
$str = 'mi_contraseña';
echo sha1($str);
?>

sha1_file()

Calcula el hash sha1 de un archivo. Básicamente es lo mismo que sha1() pero en vez de introducir una cadena de texto se introduce el path completo de una cadena de texto.

Ejemplo de uso:

<?php
$ruta_fichero = '/home/pedro/fichero.txt';
echo sha1($ruta_fichero);
?>

md5()

Calcula el hash md5 de un string. Uno de las funciones de encriptación mas usadas. utiliza el algoritmo de “resumen de mensajes” o MD5 Message-Digest Algorithm.

Puedes utilizar el siguiente Generador online md5 para comprobar y testear resultados de cadenas encriptadas en md5.

Puedes usar la siguiente función para generar contraseñas http://www.pedroventura.com/blog_programacion/2010/09/20/funcion-php-generar-password/ para usuarios o cualquier otra funcionalidad. Una vez generada la contraseña, se le aplica el md5() o el sha1().

Existen infinidad de funciones para generar una buena cadena encriptada en md5(), tantas como cada uno lo quiera complicar, añadiendo variables de tiempo, añadiendo intervalos de pulso de cpu, añadiendo “salt”, combinaciones adicionales de palabras y caracteres a la cadena de texto dada, añadiendo expresiones regulares propias e incorporando un sistema de encriptacion adicional, etc..

Mirando en la documentación oficial de php.net, me quedo con la siguiente función, es simple, pero eficaz.
Pero sin duda si queréis usar la función en algún desarrollo en producción la cambiaría para no dejarla igual. Mucha gente ya la habrá copiado tal cual.

<?php 
function eliteEncrypt($string) { 
    // Create a salt 
    $salt = md5($string."%*4!#$;.k~'(_@"); 
    
    // Hash the string 
    $string = md5("$salt$string$salt"); 
    
    return $string; 
} 
?> 

A pesar de ser una de las funciones para codificar o encriptar textos más usadas, ciertas investigaciones han revelado vulnerabilidades que hacen cuestionable el uso futuro del MD5. En agosto de 2004, Xiaoyun Wang, Dengguo Feng, Xuejia Lai y Hongbo Yu anunciaron el descubrimiento de colisiones de hash para MD5. Su ataque se consumó en una hora de cálculo con un clúster IBM P690.
Aunque dicho ataque era analítico, el tamaño del hash (128 bits) es lo suficientemente pequeño como para que resulte vulnerable frente a ataques de «fuerza bruta». El proyecto de computación distribuida MD5CRK arrancó en marzo de 2004 con el propósito de demostrar que MD5 es inseguro frente a uno de tales ataques, aunque acabó poco después del aviso de la publicación de la vulnerabilidad del equipo de Wang.
Debido al descubrimiento de métodos sencillos para generar colisiones de hash, muchos investigadores recomiendan su sustitución por algoritmos alternativos tales como SHA-1 o RIPEMD-160.

hash()

Genera un valor cifrado en base a un string.
En esta función primero hay que especificar que encriptacion queremos usar, y como segundo valor indicamos la cadena de texto.

Ejemplo para encriptar un texto en base al algoritmo ripemd160

<?php
echo hash('ripemd160', 'Codificando un texto.');
?>

También podemos usar sha1 o md5

<?php
$id = rand();
$salt ="Un texto aleatorio que queramos para añadir mas seguridad";
$codigo = hash("sha512", $id.$salt);
?>

La lista actual de sistema de encriptacion que soporta la funcion hash() es la siguiente:

[0] => md4
[1] => md5
[2] => sha1
[3] => sha256
[4] => sha384
[5] => sha512
[6] => ripemd128
[7] => ripemd160
[8] => whirlpool
[9] => tiger128,3
[10] => tiger160,3
[11] => tiger192,3
[12] => tiger128,4
[13] => tiger160,4
[14] => tiger192,4
[15] => snefru
[16] => gost
[17] => adler32
[18] => crc32
[19] => crc32b
[20] => haval128,3
[21] => haval160,3
[22] => haval192,3
[23] => haval224,3
[24] => haval256,3
[25] => haval128,4
[26] => haval160,4
[27] => haval192,4
[28] => haval224,4
[29] => haval256,4
[30] => haval128,5
[31] => haval160,5
[32] => haval192,5
[33] => haval224,5
[34] => haval256,5

Para más informacion consultar la documentacion oficial de php en php.net

Tags de búsquedas:

codificar php,encriptar texto php,que es haval256,encriptar texto con php,encriptar url php,escribir codificando un txt en php,escribir en un fichero desde php con encriptacion,explicacion del algoritmo sha-1,funcion de encriptacion en php wordpress,funcion ecripta hash php,funcion para codificar en php,yhs-004,escribir cadenas en chino con php,entriptar php,encriptar whirlpool

Noticias relacionadas »

3 comentarios en Funciones php para codificar textos

  1. / Responder

    Gracias por post se agradece la informacion

  2. / Responder

    Gracias justo lo que andaba buscando

  3. Pingback: Fundamentos de codificación PHP

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.

Invertir en criptomonedas: »

 

Cómo comprar bitcoin

Invertir y comprar Bitcoin y otras altcoins es más fácil de lo que crees.

1) Si sólo quieres comprar Bitcoin, Ethereum o Litecoin como inversión, tu opción es Coinbase

2) Si quieres probar con otras criptomonedas tu opción es Binance

3) Cualquier duda escríbeme con total libertad al formulario de contacto para resolver dudas: https://www.pedroventura.com/contacto/

¡Comparte este artículo! »

  • Pedro (3 días)
    Buenos días Margherita El plugin está obsoleto y ya no…
  • Juan Carlos Díaz (4 días)
    Este grupo de Telegram me ha dado muy buenas señales…
  • Margherita (4 días)
    Hola, tengo un problema con el plugin. Tanto en la…
  • Pablo H (2 semanas)
    Hola Pedro, Muchas gracias por el post, me fue muy…
  • Pedro Ventura (3 semanas)
    Hola Margat Muchísimas gracias por tu comentario, me alegro de…
  • Pedro Ventura (3 semanas)
    Hola Rebeca, Tan sólo se permite 1 dominio por cuenta.…

Suscríbete al newsletter »

Proporciona tu correo electrónico a continuación y recibe las últimas noticias! Funciona con Feedburner de Google

Archivo »

Leer entrada anterior
Proteger carpeta con htaccess y .htpasswd

Una forma básica de ofrecer seguridad sobre directorios web en Linux es utilizando el archivo de Apache htaccess. Este se...

Cerrar