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
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:
Deja una respuesta