Olá tudo bem?
Bom estou tentando colocar criptgrafia, criei um metodo para criptografar as senhas que iram no banco de dados:
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package br.com.rpctv.siseng.etc;
import java.math.BigInteger;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
/**
*
* @author ricardo
*/
public class Criptografia {
public static String md5(String senha) {
String sen = "";
MessageDigest md = null;
try {
md = MessageDigest.getInstance("MD5");
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
}
BigInteger hash = new BigInteger(1, md.digest(senha.getBytes()));
sen = hash.toString(16);
return sen;
}
}
Depois eu chamei esse medo na hora de salvar a senha, porque assim vai para o banco de dados criptografada(e esta indo, sem problemas nenhum até aqui):
public void setPassword(String password) {
this.password = Criptografia.md5(password);
}
o Problema é agora, eu uso o spring security, e nao tenho muita ideia de como comparar a senha “normal” que o usuario digitou com a senha criptografada no banco de dados, sei que tenho que criptogafar a senha que o usuario digitou no login e comparar as duas senhas ja criptografadas, só nao sei como fazer isso.
Analisei um pouco e percebi que o spring security faz a comparação fazendo um select descrito no application context:
<?xml version="1.0" encoding="UTF-8"?>
<b:beans xmlns="http://www.springframework.org/schema/security"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:b="http://www.springframework.org/schema/beans"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/security
http://www.springframework.org/schema/security/spring-security-3.0.xsd">
<http auto-config="true" access-denied-page="/negado.xhtml" use-expressions="true">
<intercept-url pattern="/view/**" access="hasAnyRole('ROLE_ADMIN','ROLE_TECNICO','ROLE_USER','ROLE_OPEC','ROLE_OPERADOR','ROLE_USUARIO','ROLE_JORNALISMO', 'ROLE_PROGRAMACAO', 'ROLE_OPECCORD', 'ROLE_ADMINISTRACAO', 'ROLE_ROTEIRO' )"/>
<form-login login-page="/login.xhtml" authentication-failure-url="/login.xhtml?erro=true"/>
<session-management>
<concurrency-control max-sessions="1" error-if-maximum-exceeded="true" />
</session-management>
</http>
<authentication-manager>
<authentication-provider>
<!-- <security:password-encoder hash="md5"/> -->
<jdbc-user-service data-source-ref="dataSource"
users-by-username-query="SELECT username, password, enable FROM usuario WHERE username=?" <!-- MAIS ESPECIFICO AQUI -->
authorities-by-username-query="SELECT username as username, nome as authority FROM usuarioautorizacao WHERE username=?"
/>
</authentication-provider>
</authentication-manager>
<b:bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource" >
<b:property name="url" value="jdbc:oracle:thin:@xxxxxxxxxxxxx:XE"/>
<b:property name="driverClassName" value="oracle.jdbc.OracleDriver"/>
<b:property name="username" value="xxxxxxxxxx" />
<b:property name="password" value="xxxxxxxxxxxxx" />
</b:bean>
</b:beans>
só nao consigo criptografar essa busca para o spring criptografar, buscar e comprar as duas senhas ja criptografadas.
Alguem pode me ajudar?