En mi aplicación web Java, la cuenta de administrador creará una cuenta de usuario, donde se cifrará la contraseña, usando la clase StandardPasswordEncoder , eso es fácil. Pero, ¿cómo encriptar la contraseña de administrador, que ya almacené en la base de datos MySQL ?
¿Cómo encriptar la contraseña de administrador, que ya almacené en la base de datos mysql?
Puedes editar tu contraseña:
UPDATE table_name SET pass = MD5(pass); -- --------------------------^^^------- -- This can be any Standard encryption algorithm, you can check the link abovePuede echar un vistazo a las funciones de cifrado y compresión
¿Qué pasa si solo quiero cifrar solo la contraseña de administrador? la contraseña de otros usuarios será encriptada por el administrador en la clase de controlador java.
Puede marcar su contraseña como un administrador maestro, por ejemplo, puede agregar una columna en su tabla que marque la diferencia entre el administrador y los usuarios comunes, considere que tiene una gran empresa en este caso, una cuenta de administrador no es suficiente, necesita muchos administradores cuentas, y en base a esta columna puede cifrar la cuenta de administrador con un algoritmo y las demás con otro algoritmo.
Logré encriptar la contraseña de administrador, pero no puedo iniciar sesión en mi aplicación web porque la clase StandardPasswordEncoder en la aplicación web usa el algoritmo hash SHA-256
SHA-256 != MD5 , esto está claro, por lo que debe usar el mismo algoritmo en el código lateral y en la base de datos, en su caso, está usando SHA-256 , supongo que está usando una función como esta:
CÓDIGO
public static String sha256(String base) { try { MessageDigest digest = MessageDigest.getInstance("SHA-256"); byte[] hash = digest.digest(base.getBytes("UTF-8")); StringBuilder hexString = new StringBuilder(); for (int i = 0; i < hash.length; i++) { String hex = Integer.toHexString(0xff & hash[i]); if (hex.length() == 1) { hexString.append('0'); } hexString.append(hex); } return hexString.toString(); } catch (UnsupportedEncodingException | NoSuchAlgorithmException ex) { throw new RuntimeException(ex); } }Esto encriptará al administrador de esta manera:
admin = 8c6976e5b5410415bde908bd4dee15dfb167a9c873fc4bb8a81f6f2ab448a918BASE DE DATOS
Entonces, en su base de datos, debe cifrar su contraseña de esta manera:
SELECT SHA2('admin', 256);La consulta de actualización debería verse así:
UPDATE table_name SET pass = SHA2(pass, 256) WHERE admin_master = true; -- -------------Field to check if it is admin or not ---^Entonces, cuando intenta iniciar sesión, debe verificar si es administrador o no, si el administrador encripta su contraseña con SHA-256 y verifica si el usuario existe o no, de lo contrario, si el usuario es un usuario ordinario, verifique con su algoritmo anterior.
Espero que esto pueda darte una idea.