quero criptografar minha senha…alguem conhece alguma API?ALGUEM TEIA ALGUM EXEMPLO?
Procure neste fórum por “MD5” e “Senhas”
Você pode fazer assim:
import sun.misc.BASE64Encoder;
import usuario.Usuario;
public class CadastroUsuario{
String senhacriptografada;
BASE64Encoder encoder;
Usuario usuario = new Usuario();
usuario.setLogin( “fulano”);
usuario.setSenha(“12345”);
encoder = new BASE64Encoder();
senhacriptografada = encoder.encode( usuario.getSenha().getBytes) );
usuario.setSenha( senhacriptografada );
}
Simplesmente gravar os bytes em Base-64 não criptografa nada (como o Rulio fez).
Cuidado!
Leia o método "main" e veja como é que se usa esse método "toPassword".
import java.security.*;
public class PasswordMD5 {
public static void main(String[] args) {
try {
String password = PasswordMD5.toPassword ("NicoleKidman"); // a senha cadastrada
System.out.println ("password = " + password);
String password2 = PasswordMD5.toPassword ("NicoleKIdman"); // usuário digitou errado
System.out.println ("password2 = " + password2);
String password3 = PasswordMD5.toPassword ("NicoleKidman"); // usuário digitou certo
System.out.println ("password3 = " + password3);
if (!password.equals(password2)) {
// como a senha não bate...
System.out.println ("password2 eh uma senha incorreta");
}
if (password.equals(password3)) {
// como a senha bate...
System.out.println ("password3 eh uma senha correta");
}
} catch (Exception ex) {
ex.printStackTrace();
}
}
private static String bytesToHex (byte[] b) {
StringBuffer sb = new StringBuffer();
for (int i = 0; i < b.length; ++i) {
sb.append ((Integer.toHexString((b[i] & 0xFF) | 0x100)).substring(1,3));
}
return sb.toString();
}
public static String toPassword (String data) throws NoSuchAlgorithmException {
byte[] mybytes = data.getBytes();
MessageDigest md5 = MessageDigest.getInstance("MD5");
byte[] md5digest = md5.digest (mybytes);
return bytesToHex (md5digest);
}
}
Se for para algum sistema “em produção”, recomendo não usar mais o algoritmo MD5, pois as “consultorias de segurança” estão barrando a utilização deste algoritmo nos sistemas.
PS: Não crie outro tópico sobre o mesmo assunto.
PS2: Veja o que o thingol escreveu: Base64 não é algoritmo de criptografia.
calma ai gente, a minha intenção é das melhores possíveis. Estamos no mesmo barco.
Até minutos atraz pensei que seria. Mas já que não é me explica ai.
Descupa ai…
PS: Até é algoritmo, mas se não é mais usado é outra coisa. Isso é um algoritmo de chave compartilhada.
Rulio, é o seguinte: criptografia é algo que é um pouco mais complicado que parece.
Digamos que você use o seu algoritmo para "cifrar" as seguintes senhas:
"Nicole Kidman" -> Tmljb2xlIEtpZG1hbg==
"Nicole kidman" -> Tmljb2xlIGtpZG1hbg==
(OK, se você prefere outra atriz ponha outro exemplo aqui
Por exemplo, "Jennifer Lopez" -> SmVuaWZmZXIgTG9wZXo= )
Se você olhar direitinho, as senhas são quase iguais, e quando você usa "Base-64" para convertê-las, elas também são quase iguais (uma letra E na primeira posição, uma letra G na segunda posição).
Ou seja, qualquer um, com um pouco de paciência, seria capaz de (olhando um arquivo com várias senhas) deduzir como é que você fez a codificação.
Usando o MD5, isso já é mais complicado (como o exemplo que dei no programa postado). Na verdade, no caso do MD5, seria necessária uma busca exaustiva para achar a senha.
(O Oyama notou que estou usando o MD5, que está “deprecated”; pode trocar por algum outro algoritmo, como o SHA-256. (O SHA-1 também foi considerado inseguro.)
public static void main(String[] args) {
String senha = "123";
MessageDigest md = null;
try {
md = MessageDigest.getInstance("MD5");
} catch (Exception e) {
e.printStackTrace();
}
byte[] senhaBytes = senha.getBytes();
byte[] hash = md.digest(senhaBytes);
String senhaHash = Util.encodeBase64(hash);
System.out.println(senhaHash);
}
ah. para o código acima:
import java.security.MessageDigest;
import org.jboss.security.Util;
blz então… Valeu brother…
import org.jboss.security.Util;
Onde consigo?
[quote=thingol]Rulio, é o seguinte: criptografia é algo que é um pouco mais complicado que parece.
Digamos que você use o seu algoritmo para "cifrar" as seguintes senhas:
"Nicole Kidman" -> Tmljb2xlIEtpZG1hbg==
"Nicole kidman" -> Tmljb2xlIGtpZG1hbg==
(OK, se você prefere outra atriz ponha outro exemplo aqui
Por exemplo, "Jennifer Lopez" -> SmVuaWZmZXIgTG9wZXo= )
Se você olhar direitinho, as senhas são quase iguais, e quando você usa "Base-64" para convertê-las, elas também são quase iguais (uma letra E na primeira posição, uma letra G na segunda posição).
Ou seja, qualquer um, com um pouco de paciência, seria capaz de (olhando um arquivo com várias senhas) deduzir como é que você fez a codificação.
Usando o MD5, isso já é mais complicado (como o exemplo que dei no programa postado). Na verdade, no caso do MD5, seria necessária uma busca exaustiva para achar a senha.
(O Oyama notou que estou usando o MD5, que está “deprecated”; pode trocar por algum outro algoritmo, como o SHA-256. (O SHA-1 também foi considerado inseguro.)
[/quote]
Então julio eu estava lendo o tópico ja que estou procurando também uma forma de criptografia eficiente, mas o meu objetivo não é para usar como senha, mas com transferência de informações, pois no meu programa existe um certo momento que o usuário pode alterar as informações e por isso e importante que esteja criptografado então para que o mesmo funcione preciso de algo que alem de criptografar também eu possa depois fazer a descriptografa
Pelo que eu vi em minhas pesquisas, o “MD5” e quase impossível de descriptografa, então ele se funciona comparando as senhas criptografadas ja que no banco de dados vai ficar a senha criptografado e quando o usuario digitar a senha a mesma digitada será criptografada e comparada, mas esse formato não funciona para min
Então se auguem souber como me ajudar agradeço
[quote=Victor Gerin][quote=thingol]Rulio, é o seguinte: criptografia é algo que é um pouco mais complicado que parece.
Digamos que você use o seu algoritmo para "cifrar" as seguintes senhas:
"Nicole Kidman" -> Tmljb2xlIEtpZG1hbg==
"Nicole kidman" -> Tmljb2xlIGtpZG1hbg==
(OK, se você prefere outra atriz ponha outro exemplo aqui
Por exemplo, "Jennifer Lopez" -> SmVuaWZmZXIgTG9wZXo= )
Se você olhar direitinho, as senhas são quase iguais, e quando você usa "Base-64" para convertê-las, elas também são quase iguais (uma letra E na primeira posição, uma letra G na segunda posição).
Ou seja, qualquer um, com um pouco de paciência, seria capaz de (olhando um arquivo com várias senhas) deduzir como é que você fez a codificação.
Usando o MD5, isso já é mais complicado (como o exemplo que dei no programa postado). Na verdade, no caso do MD5, seria necessária uma busca exaustiva para achar a senha.
(O Oyama notou que estou usando o MD5, que está “deprecated”; pode trocar por algum outro algoritmo, como o SHA-256. (O SHA-1 também foi considerado inseguro.)
[/quote]
Então julio eu estava lendo o tópico ja que estou procurando também uma forma de criptografia eficiente, mas o meu objetivo não é para usar como senha, mas com transferência de informações, pois no meu programa existe um certo momento que o usuário pode alterar as informações e por isso e importante que esteja criptografado então para que o mesmo funcione preciso de algo que alem de criptografar também eu possa depois fazer a descriptografa
Pelo que eu vi em minhas pesquisas, o “MD5” e quase impossível de descriptografa, então ele se funciona comparando as senhas criptografadas ja que no banco de dados vai ficar a senha criptografado e quando o usuario digitar a senha a mesma digitada será criptografada e comparada, mas esse formato não funciona para min
Então se auguem souber como me ajudar agradeço [/quote]
acredito que isso te ajude.
[quote=Victor Gerin][quote=thingol]Rulio, é o seguinte: criptografia é algo que é um pouco mais complicado que parece.
Digamos que você use o seu algoritmo para "cifrar" as seguintes senhas:
"Nicole Kidman" -> Tmljb2xlIEtpZG1hbg==
"Nicole kidman" -> Tmljb2xlIGtpZG1hbg==
(OK, se você prefere outra atriz ponha outro exemplo aqui
Por exemplo, "Jennifer Lopez" -> SmVuaWZmZXIgTG9wZXo= )
Se você olhar direitinho, as senhas são quase iguais, e quando você usa "Base-64" para convertê-las, elas também são quase iguais (uma letra E na primeira posição, uma letra G na segunda posição).
Ou seja, qualquer um, com um pouco de paciência, seria capaz de (olhando um arquivo com várias senhas) deduzir como é que você fez a codificação.
Usando o MD5, isso já é mais complicado (como o exemplo que dei no programa postado). Na verdade, no caso do MD5, seria necessária uma busca exaustiva para achar a senha.
(O Oyama notou que estou usando o MD5, que está “deprecated”; pode trocar por algum outro algoritmo, como o SHA-256. (O SHA-1 também foi considerado inseguro.)
[/quote]
Então julio eu estava lendo o tópico ja que estou procurando também uma forma de criptografia eficiente, mas o meu objetivo não é para usar como senha, mas com transferência de informações, pois no meu programa existe um certo momento que o usuário pode alterar as informações e por isso e importante que esteja criptografado então para que o mesmo funcione preciso de algo que alem de criptografar também eu possa depois fazer a descriptografa
Pelo que eu vi em minhas pesquisas, o “MD5” e quase impossível de descriptografa, então ele se funciona comparando as senhas criptografadas ja que no banco de dados vai ficar a senha criptografado e quando o usuario digitar a senha a mesma digitada será criptografada e comparada, mas esse formato não funciona para min
Então se auguem souber como me ajudar agradeço [/quote]
acha trabalhoso se você implementasse seu próprio algoritimo de criptografia ? seria a mais segura, pois sómente você saberia a formula, e poderia ter as duas vias criptografar e descriptografar.