Escolar Documentos
Profissional Documentos
Cultura Documentos
1 de 3
http://www.javaparaweb.com.br/blog/?cat=11
O aplicativo desenvolvido no livro trabalha inteiramente com a senha do usurio aberta. Porm no tpico 6.8.2 damos
uma dica de como configurar o Spring Security para trabalhar com a senha criptografada em MD5. O problema que
esta configurao no suficiente para que o sistema inteiro trabalhe com a senha criptografada. Foi ai que o leitor
Rafael Freitas entrou em contato e solicitou que fizessemos um post explicando como fazer esta alterao, o que faz
todo o sentido.
Primeiro uma definio importante: a conhecido algoritmo Base64 na verdade uma codificao e no criptografia,
pois ele reversvel. Para ser considerada uma criptografia o algoritmo tem que ser inversvel, o algoritmo MD5 tem
esta capacidade.
De maneira macro, para que o sistema trabalhe com a senha do usurio criptografada algumas alteraes so
necessrias:
1. Configurao do framework de segurana para trabalhar com a senha criptografada (j realizado no tpico
6.8.2).
2. Decidir onde realizar a encriptao da senha do usurio
3. Encriptar a senha do usurio
4. No exibir a senha criptografada em tela ao editar um usurio
Veremos agora o entendimento de cada alterao e depois a alterao passo a passo.
2 Decidir onde realizar a encriptao da senha do usurio
Seguindo o mtodo utilizado no livro de sempre analisar e argumentar bem em qual camada uma alterao deve ser
feita, vamos pensar sobre a alterao da senha criptografada.
A camada de acesso a dados (UsuarioDAO) deve ser imediatamente descartada, pois como j foi explicado esta
camada apenas transfere dados do sistema para o banco de dados, no deve fazer qualquer alterao ou
transformao.
A camada de regra de negcio (UsuarioRN) uma forte candidata, mas como a senha do usurio ser criptografada e
esta criptografia irreversvel significa que a senha do usurio entrar nela aberta (ao salvar) e sair criptografada (ao
consultar). Acredito que isto pode causar alguma confuso. O ideal que esta camada sempre trabalhe com a senha
em um formato nico.
Desta forma, a camada de visualizao o local correto para fazer a alterao e controlar a criptografia.
Ela obrigatoriamente ir trabalhar com a senha aberta, pois o que o usurio digita na tela, mas assim que receber esta
senha dever encriptar e enviar adiante para salvar, o que garante uma maior segurana.
3 Encriptar a senha do usurio
A encriptao da senha do usurio pode ser feita com uma classe do prprio Spring Security, conforme o exemplo a
seguir:
importorg.springframework.util.DigestUtils;
StringsenhaAberta=teste123;
StringsenhaCripto;
senhaCripto=DigestUtils.md5DigestAsHex(senhaAberta.getBytes());
System.out.println(senhaCripto);
Resultado
aa1bf4646de67fd9086cf6c79007026c
28/06/2015 14:13
2 de 3
http://www.javaparaweb.com.br/blog/?cat=11
aa1bf4646de67fd9086cf6c79007026c
28/06/2015 14:13
3 de 3
http://www.javaparaweb.com.br/blog/?cat=11
28/06/2015 14:13