MD5 roto modo de encriptar no seguro

    MD5 roto modo de encriptar no seguro

    MD5 roto, modo de encriptar no seguro es una familia de funciones SHA que aprecio en el año 1993, que fue creado en si en al año 1991 por el Ronald Rivest del MIT y con los años  fue mejorando paulatinamente con las nuevas versiones,  hasta que en el año 2009  fue roto por  un equipo de investigadores liderado por Alexander Sotirov y Jacob Appelbaum  y luego en el año 2004 los hackers chinos demuestran de nuevo la vulnerabilidad de MD5 SHA1 creando dos archivos diferentes que tenían el mismo hash MD5, por tal razón  MD5 para los criptógrafos y hackers experimentados no se considera algoritmo de criptografía porque se puede romper usando colisiones matemáticas y fuerza bruta.

    ¿Hasta el momento existen algoritmos criptográficos seguros?

    Se puede decir que si, porque uno nunca sabe cuando será roto el cuyo algoritmo criptográfico. Solar Designer, diseñó una clase muy sencilla para generar hashes utilizando  el algoritmo mas seguro hasta ahora, ya que este mismo algoritmo es usado  como en: Joomla, Wordpres y demás.

    El algoritmo está disponible para implementarlos en nuestros proyectos para los lenguajes de programación que se menciona en los siguientes párrafos, y se muestra como implementar.

    Mucho ojo al implementar las contraseñas no deben ser mas de 72 caracteres, esto para evitar  ataque de denegación de servicio.

    phpass para PHP

    Para implementar en nuestro proyecto de código PHP se debe descargar de la siguiente página http://www.openwall.com/phpass/ donde dice Download.

    Después de descargar se debe incluir el archivo en lugar donde está tu proyecto, he aquí un ejemplo cómo utilizar.

    <?php 
    require_once("PasswordHash.php");
    //Instancia de la clase
    $ecnriptar = new PasswordHash(8, FALSE);
    
    //Contraseña
    $laClave="test12345";
    //Generando el HASH
    $hash = $ecnriptar->HashPassword($laClave);
    //Se imprime le HASH
    echo  'Hash: ' . $hash . "\n";
    //Se hace la comparion de la contraseña
    if($ecnriptar->CheckPassword($laClave, $hash)){
    	echo "La contraseña que escribiste es correcto";
    }else{
    	echo "Error al intentar escribir contraseña";
    }
    
    ?>

    phpass para Java

    Librería implementada para java basado en el  marco de hash portátil contraseña PHP , se puede descargar la libreria de Github  https://github.com/Mollom/phpass-java , en el siguiente ejemplo se muestra como usar:

    package com.mollom.phpass;
    import static org.junit.Assert.assertFalse;
    import static org.junit.Assert.assertTrue;
    import org.junit.Before;
    import org.junit.Test;
    public class PasswordHasherTest {
      private PasswordHasher hasher;
      @Before
      public void setup() {
        hasher = new PasswordHasher();
      }
      @Test
      public void testIsMatch_matchesCorrectSolution() {
        // Se puede probar con varios casos
        assertTrue(hasher.isMatch("huan", "$S$DXZrp425p2VN9LXpDWxiBeqSZSPexyZNNPUo80fTTN2e/W15a97G"));
        assertTrue(hasher.isMatch("Cookies1", "$S$Dr3Hm8Od9X0Ux/olZ.B8Uwh6./3E1l4nPfXebovKVvMB9zcmjkTn"));
      }
      @Test
      public void testIsMatch_failsIncorrectSolution() {
        assertFalse(hasher.isMatch("OHH NO! Not cookies!", "$S$Dr3Hm8Od9X0Ux/olZ.B8Uwh6./3E1l4nPfXebovKVvMB9zcmjkTn"));
      }
      @Test
      public void testIsMatch_failsEmptySolution() {
        assertFalse(hasher.isMatch("", "$S$Dr3Hm8Od9X0Ux/olZ.B8Uwh6./3E1l4nPfXebovKVvMB9zcmjkTn"));
      }
      @Test
      public void testCreateHash_matchesOriginalPassword() {
        //Contraseña
        String password = "ThisIs@C♥mplexPÃssword™123";
        //HASH generando
        String hash = hasher.createHash(password);
        //Verificando la contraseña
        assertTrue(hasher.isMatch(password, hash));
        assertFalse(hasher.isMatch("NotTheSamePassword", hash));
      }

    phpass para C#

    Es una librería implementado basado en  phppass de openwall para C# que se puede descargar de la siguiente pagina  http://pastebin.com/XHNV9CT3 , en elsiguiente ejemplo de código se muestra como usar:

    using System;
    namespace PHPass
    {
    	class Program{
    		
    		public static void Main(string[] args){
    
           //Instancia de la clase
           phpBBCryptoServiceProvider Incriptar=new phpBBCryptoServiceProvider();
            //Paswor
            String Contrasena="Test12345";
            //Almacen el Hash
            String Hash="";
            //Generando Hash
            Hash=Incriptar.phpbb_hash(Contrasena);
           //Comparando la contraseña
            if(Incriptar.phpbbCheckHash("Test12345", Hash)){
            	Console.WriteLine("Corecto");
            }else{
            	Console.WriteLine("Incorrecto");
            }	
    		}
    	}
    }

    phpass para Python

    Una clase que es implementado basado en phpass para python, esta clase puede descargar de la siguiente pagina https://pythonhosted.org/passlib/  , en el siguiente codigo se muestra como usar:

    >>># importando la libreria
    >>> from passlib.hash import sha256_crypt
    
     # generando el Hash
     >>>hash = sha256_crypt.encrypt("toomanysecrets")
     >>>hash '$5$rounds=80000$zvpXD3gCkrt7tw.1$QqeTSolNHEfgryc5oMgiq1o8qCEAcmye3FoMSuvgToC'
    
    >>> #Verficando la contraseña
    >>> sha256_crypt.verify("toomanysecrets", hash)
    True
    >>> sha256_crypt.verify("joshua", hash)
    False

    La buena practica siempre debe importar en el tiempo de desarrollo de nuestros proyectos  ya que se debe realizar  test, de esa forma nos aseguramos  de otras vulnerabilidades.

    Fuente: 

    Sobre el autor
    Rodrigo Chambi Q.

    Desarrollador de aplicaciones web y de escritorio, amante de la tecnología y autodidacta, me gusta conocer otras tecnologías, escribir artículos para compartir en la web y para estar al tanto en los nuevos paradigmas, respeto las políticas de software privativo y libre, ya que estas políticas son las normas que permite el desarrollo tecnológico social de la humanidad. filvovmax@gmail.com -- info@gitmedio.com

    Deja una respuesta

    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.