Ok, actualmente estoy almacenando las contraseñas de la forma más segura que se pueda imaginar. Con uso de cifrado y hash. Las contraseñas las genera primero el usuario como texto sin formato con una longitud mínima de 6 caracteres alfanuméricos hasta 24 caracteres alfanuméricos.
Después de las contraseñas, el valor de texto sin formato se ejecuta contra MCRYPT. Principalmente el cifrado TWO_FISH con IV aleatorio en modo ECB. Una vez que se realiza, el texto sin cifrado se enlaza a la función Hash que también agrega SALT a través de $saltVar = dechex(mt_rand(0, 2147483647)) . dechex(mt_rand(0, 2147483647));
Todo está en su lugar. Las contraseñas cifradas con SALT + se procesan mediante SHA-256 y luego se vuelven a aplicar las siguientes 15536 rondas. Creando una contraseña relativamente segura.
En mi opinión personal, esta es una manera suficiente de proteger los datos, ya que en parte no se está utilizando una clave, no hay forma de descifrar esto, aparte de volver a ejecutarla con una contraseña de texto sin formato ingresada por el usuario y crear un cálculo temporal hash de la cadena de contraseña, después de lo cual la cadena se puede hacer coincidir con la cadena en la base de datos.
Nunca usaría esto para ningún otro dato, pero para la contraseña creo que esto es suficiente. Sin embargo, todavía me gustaría algo de crítica profesional, en cuanto a lo que sea mi forma de proteger la contraseña de texto sin formato, es segura o no, y o tal vez cómo puedo mejorar lo que ya tengo si está bien. Y mientras estoy en ello, ¿recomendaría usar TWO_FISH o cambiarlo por SEARPENT?
Gracias de antemano.