Pessoal eu uso o Spring Security para pega meu login e senha: a senha estão criptografadas:
[code]<authentication-manager>
<authentication-provider>
<!–<password-encoder hash=“md5” />–>
<jdbc-user-service data-source-ref=“dataSource”
users-by-username-query="SELECT users.username,users.password,'true' AS enabled FROM financeiro2.users WHERE users.username=?"
authorities-by-username-query="SELECT authorities.username,authorities.autority FROM financeiro2.authorities WHERE authorities.username=?"/>
</authentication-provider>
</authentication-manager>[/code]
[code]package ce.gov.nutec.util;
import org.springframework.security.authentication.encoding.Md5PasswordEncoder;
import org.springframework.security.authentication.encoding.PasswordEncoder;
public class EncriptarMD5 {
public static String encriptar(String senha) {
PasswordEncoder encoder = new Md5PasswordEncoder();
senha = encoder.encodePassword(senha, null);
return senha;
}
}[/code]
Como eu faço para na hora do cadastro ele criptografar essas senhas :?
Como ficaria meus Daos meu Controles e minhas Entidades ?
Abraço
JR.
só antes do save vc usar essa sua classe…
ou melhor, no setPassword ou no setSenha da classe Usuario/User vc já fazer isso
Conselho, md5 é velharia e bastante fácil de descriptografar.
Eu utilizo SHA-1 por conta da complexidade. Eu utilizo uma base de 64 bits para criptografia sha-1.
md5 é muito fácil de decriptar.
Eu utilizo assim:
public class StringUtils {
/**
* Codificador de Senhas!
* @param senha
* @return senha
*/
public static String encode(String senha){
try
{
MessageDigest messageDiegest = MessageDigest.getInstance("SHA-1");
messageDiegest.update(senha.getBytes("UTF-8"));
return Base64.encodeToString(messageDiegest.digest(), false);
}
catch (NoSuchAlgorithmException e)
{
throw new Error(e);
}
catch (UnsupportedEncodingException e)
{
throw new Error(e);
}
}
e no controlador:
@Path("/login")
public void login(Usuario usuario){
if (usuario.getEmail().length() == 0)
validar("É necessário informar seu email.");
if (usuario.getSenha().length() == 0)
validar("É necessário informar sua senha.");
validator.onErrorForwardTo(IndexController.class).index();
String senha = usuario.getSenha();
usuario.setSenha(StringUtils.encode(senha));
Usuario tologin = usuarioDao.login(usuario);
if (tologin == null)
validar("Senha inválida!");
validator.onErrorForwardTo(IndexController.class).index();
usuarioHandler.login(tologin);
result.redirectTo("/");
}
doravan, cuidado ao lançar Error. Você nunca deve lançar Error, mas sim Exception. Error (e suas filhas) são utlizadas pela VM para indicar quando você não pode mais se recuperar do erro, por exemplo, VirtualMachineError.
nesse caso, em que essas exceptions nunca deveriam acontecer pq esses algoritmos e encoding existem, dê throw new AssertionError(e)
Como fica no Spring Security ?
Obrigado a todos pela ajuda !
jr
tanto faz pro Spring Security, o MD5 (ou SHA-1) só vai ser necessário pra salvar/buscar usuários do banco
Pensei que tinha que fazer algo mais !
Obrigado Lucas…
[code]package br.com.catequese.util;
import com.lowagie.text.pdf.codec.Base64;
import java.io.UnsupportedEncodingException;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
public class StringUtils {
/**
* Codificador de Senhas!
* @param senha
* @return senha
*/
public static String encode(String senha) throws UnsupportedEncodingException{
try
{
MessageDigest messageDiegest = MessageDigest.getInstance("SHA-1");
messageDiegest.update(senha.getBytes("UTF-8"));
return Base64.encodeToString(messageDiegest.digest(), false); ************************************ta dando erro aqui
}
catch (NoSuchAlgorithmException e)
{
throw new Error(e);
}
catch (UnsupportedEncodingException e)
{
throw new Error(e);
}
}
}[/code]
[quote]library-inclusion-in-manifest:
Created dir: /home/agonia/sigi/build/empty
Compiling 120 source files to /home/agonia/sigi/build/web/WEB-INF/classes
/home/agonia/sigi/src/br/com/catequese/util/StringUtils.java:19: cannot find symbol
symbol : method encodeToString(byte[],boolean)
location: class com.lowagie.text.pdf.codec.Base64
return Base64.encodeToString(messageDiegest.digest(), false);
Note: Some input files use or override a deprecated API.
Note: Recompile with -Xlint:deprecation for details.
Note: Some input files use unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.
1 error
/home/agonia/sigi/nbproject/build-impl.xml:412: The following error occurred while executing this line:
/home/agonia/sigi/nbproject/build-impl.xml:231: Compile failed; see the compiler error output for details.
FALHA NA CONSTRUÇÃO (tempo total: 1 segundo)[/quote]
Teria ideia do que ta errado ?
o Base64 está importado do lugar errado, tente importar o do javax.net ou coisa do tipo