Criptografar/Descriptografar....

Java

09/04/2009

Ola estou precisando criptografar e descriptografar dados........ alguem tem alguma coisa ae, p/ me ajudar??? desde já agradeço! um abraço!!!
Bruno Ambrózio

Bruno Ambrózio

Curtidas 0

Respostas

Lucas Teixeira

Lucas Teixeira

09/04/2009

   public static String encrypt(String user, String password) { 
      String sign = user + password; 

      try { 
         java.security.MessageDigest md = 
            java.security.MessageDigest.getInstance("MD5"); 
         md.update(sign.getBytes()); 
         byte[] hash = md.digest(); 
         StringBuffer hexString = new StringBuffer(); 
         for (int i = 0; i < hash.length; i++) { 
            if ((0xff & hash[i]) < 0x10) 
               hexString.append( 
                  "0" + Integer.toHexString((0xFF & hash[i]))); 
            else 
               hexString.append(Integer.toHexString(0xFF & hash[i])); 
         } 
         sign = hexString.toString(); 
      } 
      catch (Exception nsae) { 
         nsae.printStackTrace(); 
      } 
      return sign; 
   }
tirado aqui do JF mesmo..... ele gera o md5 de uma [b]STRING[/b] composta (no caso) pelo usuario + senha... se nao for isso, que tipode dado vc quer criptografar?
GOSTEI 0
Carlos Barbosa

Carlos Barbosa

09/04/2009

Tenho essa locura aqui.... show de Bola...

import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;


public class CriptografiaLogix {
	private String usuario;
	private String senha;

	public CriptografiaLogix() {
	}

	public CriptografiaLogix(String usuario, String senha) {
		this.criptografaLogin(usuario, senha);
	}

	public String criptografaLogin(String codUsuario, String senha) {

		String senhaResult;
		String arrumaResult = new String("");

		StringBuffer codUsuarioAsciiAux;
		StringBuffer senhaAsciiAux;
		StringBuffer senhaResultAux;
		StringBuffer valorAscii;
		StringBuffer shortBuffer;

		Short codUsuarioShort;
		Short senhaShort;
		Short shortAux;

		short somaSenha = 0;

		codUsuarioAsciiAux = new StringBuffer("000000000000000000000000");
		senhaAsciiAux = new StringBuffer("000000000000000000000000");
		valorAscii = new StringBuffer("000000000000000000000000");

		int ind2 = 1;
		for (int ind1 = codUsuario.length(); ind1 >= 1; ind1--) {
			codUsuarioAsciiAux.replace(
				ind2 - 1,
				ind2 + 1,
				obtemValorAscii(codUsuario.substring(ind1 - 1)));
			ind2 = ind2 + 3;

		}

		codUsuarioAsciiAux.setLength(24);
		// Truncando p/ os 24 caracteres da criptografia
		this.usuario = (String) codUsuarioAsciiAux.toString();
		// Obtendo usuario criptografado

		ind2 = 1;
		for (int ind1 = 0; ind1 < senha.length(); ind1++) {
			senhaAsciiAux.replace(
				ind2 - 1,
				ind2 + 1,
				obtemValorAscii(senha.substring(ind1)));
			ind2 = ind2 + 3;
		}

		senhaAsciiAux.setLength(24);
		// Truncando p/ os 24 caracteres da criptografia

		for (int ind1 = 0; ind1 < 22; ind1 += 3) {
			codUsuarioShort =
				new Short(
					codUsuarioAsciiAux.substring(ind1, ind1 + 3).toString());
			senhaShort =
				new Short(senhaAsciiAux.substring(ind1, ind1 + 3).toString());
			somaSenha =
				(short) (codUsuarioShort.shortValue()
					+ senhaShort.shortValue());
			shortAux = new Short(somaSenha);
			arrumaResult = Short.toString(shortAux.shortValue());
			if ((arrumaResult != null) && (arrumaResult.length() == 2)) {
				arrumaResult = "0" + arrumaResult;
			}
			valorAscii.replace(ind1, ind1 + 2, arrumaResult);
			// System.out.println("1 : "+ shortAux.shortValue());//teste2
			// System.out.println("2 : " + valorAscii.toString()); //teste3
		}

		valorAscii.setLength(24);
		//Truncando p/ os 24 caracteres da criptografia do Logix

		senhaResult = (String) valorAscii.toString();
		this.senha = senhaResult;
		// Obtendo senha criptografada
		return senhaResult;
	}

	public String decriptografarSenha(String usuario, String senhaCripto) throws java.lang.NumberFormatException {
		String senhaResult;
		String arrumaResult = new String("");

		StringBuffer codUsuarioAsciiAux;
		String usuarioAscii;
		StringBuffer senhaAsciiAux;
		StringBuffer senhaResultAux;
		StringBuffer valorAscii;

		Short codUsuarioShort;
		Short shortAux;
		Short senhaCriptoShort;

		short diminuiSenha = 0;

		codUsuarioAsciiAux = new StringBuffer("000000000000000000000000");
		senhaAsciiAux = new StringBuffer("000000000000000000000000");
		senhaResultAux = new StringBuffer("000000000000000000000000");
		valorAscii = new StringBuffer(senhaCripto);

		int ind2 = 1;
		for (int ind1 = usuario.length(); ind1 >= 1; ind1--) {
			codUsuarioAsciiAux.replace(
				ind2 - 1,
				ind2 + 1,
				obtemValorAscii(usuario.substring(ind1 - 1)));
			ind2 = ind2 + 3;

		}

		codUsuarioAsciiAux.setLength(24);
		// Truncando p/ os 24 caracteres da criptografia
		usuarioAscii = (String) codUsuarioAsciiAux.toString();
		// Obtendo usuario criptografado

		for (int ind1 = 0; ind1 < 22; ind1 += 3) {
			codUsuarioShort = new Short(codUsuarioAsciiAux.substring(ind1, ind1 + 3).toString());
			senhaCriptoShort = new Short(valorAscii.substring(ind1,ind1+3).toString());
			diminuiSenha =	(short) (senhaCriptoShort.shortValue() - codUsuarioShort.shortValue());
			shortAux = new Short(diminuiSenha);
			arrumaResult = Short.toString(shortAux.shortValue());
			if ((arrumaResult != null) && (arrumaResult.length() == 2)) {
				arrumaResult = "0" + arrumaResult;
			}
			senhaResultAux.replace(ind1, ind1 + 2, arrumaResult);
			// System.out.println("1 : "+ shortAux.shortValue());//teste2
			// System.out.println("2 : " + valorAscii.toString()); //teste3
		}

		senhaResultAux.setLength(24);
		//Truncando p/ os 24 caracteres da criptografia
		senhaResult="";
        try {
        
	        for(int ind1=0;ind1<22;ind1 +=3){
	           String aux = String.valueOf((char) new Short(senhaResultAux.substring(ind1, ind1 + 3).toString()).intValue());
	           if((Character.isLetterOrDigit(aux.charAt(0)))){
	           	     senhaResult += aux;
	           }	
	        } 
        } catch(Exception ex) {
			return "000000000";
        }

		return senhaResult;
	}

	public String obtemValorAscii(String caracterString) {
		Character caracter;
		Character caracter2;
		Character caracter3;
		Character caracter4;

		String caracterAux;
		String resultCharacter;

		StringBuffer valorAscii;

		int compara = 0;

		short posIni = 0;
		short posFim = 0;
		short comparador = 0;

		byte valorAsciiAux;

		posIni = (short) 32;
		posFim = (short) 126;
	    caracter = new Character(caracterString.charAt(0));
        caracter2 = new Character('0');
		caracter3 = new Character('A');
		caracter4 = new Character('a');

		valorAscii = new StringBuffer();

		compara = caracter.compareTo(caracter2);
		// Retorna 0 (zero) se for igual numericamente
		// Retorna um numero menor que zero se for menor numericamente
		// Retorna um numero maior que zero se for maior numericamente

		if (compara == 0 || compara > 0) {
			posIni = (short) 48;
			compara = caracter.compareTo(caracter3);
			if (compara == 0 || compara > 0) {
				posIni = (short) 65;
				compara = caracter.compareTo(caracter4);
				if (compara == 0 || compara > 0) {
					posIni = (short) 97;
				} else {
					posFim = (short) 90;
				}
			} else {
				posFim = (short) 90;
			}
		} else {
			posFim = (short) 47;
		}

		for (int i = posIni; i <= posFim; i++) {
			caracterAux = caracter.toString();
			valorAsciiAux = (byte) caracterAux.charAt(0);
			comparador = valorAsciiAux;
			if (comparador == i) {
				if (comparador < 100) {
					valorAscii.append("0").append(i);
					// apenas para fazer igual ao 4GL USING &&&
				} else {
					valorAscii.append(i);
				}
			}
		}
		resultCharacter = new String(valorAscii);
		return resultCharacter;
	}

	public String descriptografaUsuario(String usuarioCriptografado) {

		Byte byteAux = null;
		StringBuffer retornoAux = null;
		String stringAux;
		String retorno = "";

		char[] charAux = new char[1];

		retornoAux = new StringBuffer();

		for (int i = 0; i < usuarioCriptografado.length(); i = i + 3) {
			stringAux = usuarioCriptografado.substring(i, i + 3);
			byteAux = new Byte(stringAux);
			charAux[0] = (char) byteAux.byteValue();
			stringAux = new String(charAux);
			retornoAux.append(stringAux);
		}

		retornoAux.reverse();
		retorno = new String(retornoAux.toString());

		return retorno;
	}

	public String getUsuarioCriptografado() {
		return this.usuario.toString();
	}

	public String getSenhaCriptografada() {
		return this.senha.toString();
	}

	public static String criptografaSenha(String senha) {
		MessageDigest md = null;
		String password = new String(senha);
		try {
			md = MessageDigest.getInstance("SHA-1");
		} catch (NoSuchAlgorithmException _exNSAE) {
			System.out.println(
				"Algoritmo de criptografia n�o encontrado. \n Execu��o abortada.");
			System.exit(0);
		}
		md.reset();
		md.update(password.getBytes());
		byte[] digest1 = md.digest();

		StringBuffer encryptedPassword = new StringBuffer();
		for (int i = 0; i < digest1.length; i++) {
			encryptedPassword.append(Integer.toHexString(0xFF & digest1[i]));
		}
		return encryptedPassword.toString();
	}

	static void escreve(String str) {
		System.out.println(str);
	}

	public static void main(String[] args) {
		String user = "Laranjinha";
		String pass = "uHjWdg5";
		CriptografiaLogix cripto = new CriptografiaLogix(user, pass);
		escreve("Testes de senha");
		escreve("Usuario    : " + user);
		escreve("Senha Plana: " + pass);
		escreve("Senha Banco: " + cripto.getSenhaCriptografada());
		escreve("Senha      : " + cripto.decriptografarSenha(user,cripto.getSenhaCriptografada()));
		escreve("Usuário    : " + cripto.descriptografaUsuario(cripto.getUsuarioCriptografado()));
		escreve("#####################################");
		escreve("");
		escreve("FIM");
	}

}
GOSTEI 0
Carlos Barretto

Carlos Barretto

09/04/2009

nossa, esse deve ser usado pela NASA! :hauhau: :hauhau: :hauhau: :hauhau: :hauhau: :hauhau: :hauhau: :hauhau: :hauhau: :hauhau:
GOSTEI 0
Bruno Ambrózio

Bruno Ambrózio

09/04/2009

hehehehhe locura, loucura, louccura!!! ehehheh entao Lucas, só vou precisar criptografar a senha... acho q com esse dá certo!!!! vou tentar aqui!!!! valeu Lucas e Small Orange !!!hhehehe falowww
GOSTEI 0
Bruno Ambrózio

Bruno Ambrózio

09/04/2009

Ei Lucas... vc nao teria a descriptografia??????????????
GOSTEI 0
Lucas Teixeira

Lucas Teixeira

09/04/2009

[quote="brunoambrozio"]Ei Lucas... vc nao teria a descriptografia??????????????
Bruno.... é o seguinte cara... hoje em dia não se descriptografa mais nada pela insegurança desta senha trafegar.... entao o que se faz? quando o usuario se cadastra... é gerado este codigo e armazenado no banco.... ai quando ele vai logar, vc gera novamente este codigo com o usuario e senha que ele tentou logar, e ai voce compara com o do banco (ou o que vc guardou anteriormente).... se conferir... BINGO!, se não.... ai voce nega o acesso... entendeu ?? :!: :!: :!:
GOSTEI 0
Bruno Ambrózio

Bruno Ambrózio

09/04/2009

Isso sim... Mas o que eu estava precisando era fazer a inversão tb......... ai eu peguei o codigo do laranjinha e deu certo!!!! mais uma vez, valeu!!!! :!: :!:
GOSTEI 0
Lucas Teixeira

Lucas Teixeira

09/04/2009

[quote="brunoambrozio"]Isso sim... Mas o que eu estava precisando era fazer a inversão tb......... ai eu peguei o codigo do laranjinha e deu certo!!!! mais uma vez, valeu!!!! :!: :!:
Beleza cara... mas lembre-se.... é altamente não-recomendado fazer o uso da descriptografia.... Bom.... mas dependendo da sua aplicação.... e falando nisso... fiquei curioso para saber o que vc está implementando que necessita de criptografia.... :oops: :oops: :oops:
GOSTEI 0
Bruno Ambrózio

Bruno Ambrózio

09/04/2009

Então... eu trabalho em uma empresa que faz sistemas publicos.. e eu e o carlosbarretto estamos refazendo a pagina e criando um sistema de atualizacao, cadastro.. etc.... até ai td bem... o nosso chefe, pediu p/ que nós dispusessemos as senhas de liberação dos softwares p/ os clientes pela net... entao resolvemos fazer isso, para que o provedor que hospeda a nossa pagina nao tenha acesso a essas senhas..... e é isso ae!!! :idea: :idea:
GOSTEI 0
Lucas Teixeira

Lucas Teixeira

09/04/2009

[quote="brunoambrozio"]Então... eu trabalho em uma empresa que faz sistemas publicos.. e eu e o carlosbarretto estamos refazendo a pagina e criando um sistema de atualizacao, cadastro.. etc.... até ai td bem... o nosso chefe, pediu p/ que nós dispusessemos as senhas de liberação dos softwares p/ os clientes pela net... entao resolvemos fazer isso, para que o provedor que hospeda a nossa pagina nao tenha acesso a essas senhas..... e é isso ae!!! :idea: :idea:
e para que voce precisa da descriptografia?
GOSTEI 0
Carlos Barretto

Carlos Barretto

09/04/2009

[quote="brunoambrozio"]Então... eu trabalho em uma empresa que faz sistemas publicos.. e eu e o carlosbarretto estamos refazendo a pagina e criando um sistema de atualizacao, cadastro.. etc.... até ai td bem... o nosso chefe, pediu p/ que nós dispusessemos as senhas de liberação dos softwares p/ os clientes pela net... entao resolvemos fazer isso, para que o provedor que hospeda a nossa pagina nao tenha acesso a essas senhas..... e é isso ae!!! :idea: :idea:
só complementando, ao cliente se logar ele automaticamente saberá a senha do sistema gerada por uma classe Java, ou seja, a senha dos sistemas nunca ficara na internet ... mas com as senhas de usuario pode-se descobrir a senha dos sistemas, e é aí que entra a criptografia "para a senha do cliente!! " :!:
GOSTEI 0
Ivo Guedes

Ivo Guedes

09/04/2009

Estou querendo salvar as senhas criptografadas e ler elas novamente para efetuar um controle ao trocar a senha, e não estou conseguindo fazer isso criptografando, sem criptografa ta funcionando quando fui implementar a cripto não sai do lugar segue o código abaixo
package safeHistorical;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import javax.swing.JOptionPane;

import java.security.MessageDigest;
import java.util.ArrayList;
import java.util.RandomAccess;

public class GerenciadorUsuarios {
	
	
	
	public void validarSenha(String usuario, String senha, String novaSenha, String  confirmarNovaSenha){

		try {
			String arquivo = usuario+"senha.txt";
			ArrayList<String> senhas = new ArrayList<String>();
			BufferedReader in = new BufferedReader(new FileReader(arquivo));
						while (in.ready()){
							senhas.add(in.readLine());				
						}
					in.close();
							
			
								
				if (senhas.contains(novaSenha)){
				JOptionPane.showMessageDialog(null, "Senha já cadastrada");
				return;
			}
			
		String ultimaSenha = senhas.get(senhas.size()-1);
		if (senha.equals(ultimaSenha) && (novaSenha.equals(confirmarNovaSenha ))){
			senhas.add(novaSenha);
			 this.cadastrarSenha(senhas, usuario);//QUERO FAZER AO INVES DE ENTRAR EM CADASTRAR SENHA DE ENTRAR NO MÉTODO CRIPTOGRAFAR SENHA
			 //E DEPOIS DO ENTRAR EM CRIPTOGRAFAR AI SIM ENTRAR NO CADASTRAR SENHA.............
			 //TEM COMO?? E DEPOIS ELE VAI SABER LER A SENHA?
		return;
		}
				
		else if 	(senha.equals(ultimaSenha) && (!novaSenha.equals(confirmarNovaSenha ))){
				JOptionPane.showMessageDialog(null, "A confirmação da senha é diferente da senha informada!");
				return;
			 }
		
		else {
				JOptionPane.showMessageDialog(null, "Senha atual não confere!");
			return;
		}	
			
	}
		
		catch (IOException e) {
			JOptionPane.showMessageDialog(null, e.getMessage()); 
		}

	}

	
	

//	private void criptografaSenha(String novaSenha){  
//        try {  
//            MessageDigest algorithm = MessageDigest.getInstance("SHA-256");  
//            byte messageDigest[] = algorithm.digest(novaSenha.getBytes("UTF-8"));  
//               
//            StringBuilder hexString = new StringBuilder();  
//            for (byte b : messageDigest) {  
//              hexString.append(String.format("%02X", 0xFF & b));  
//            }  
//            novaSenha = hexString.toString();  
//            
//		
//        } 
//        
//        catch (Exception e) {
//        	
//        }

               
       
//    }  
	
	
	
			private void cadastrarSenha(ArrayList<String> senhas, String usuario) {
		try{
			String arquivo = usuario+"senha.txt";
			BufferedWriter x = new BufferedWriter(new FileWriter(arquivo));
			for(int i = 0; i < senhas.size(); i++) {
			String Grav = senhas.get(i)+"\r\n";
			x.write(Grav);    
			}
			x.close();         
			
			JOptionPane.showMessageDialog(null, "Arquivo gravado com sucesso");  
		}  
		catch(Exception e){  
			JOptionPane.showMessageDialog(null,e.getMessage(),"Atenção",JOptionPane.WARNING_MESSAGE);  
		}
		
	}
	
}
se precisar mando o resto(entradas via frame)
GOSTEI 0
Ivo Guedes

Ivo Guedes

09/04/2009

Existe uma técnica chamada [url=http://pt.wikipedia.org/wiki/ROT13]ROT-13[/url] é bem interessante. Provavelmente não vai te servir mas.... Só postei pra mostrar que ela existe :P
GOSTEI 0
Jonatas Carlos

Jonatas Carlos

09/04/2009

Sei que o topico ja ta off e ja foi resolvido mas tipo tenta fazer varias mesclagens de array hexa gerados, dai voce mescla denovo com outro hexa mas limita o tamanho da password pra 8 caracteres é bem seguro... Eu tive essa ideia se quiser passo o codigo pra voce... são poucas linhas se comparado a segurança do sistema... gera bilhoes de senhas e escolhe uma... se pedir eu passo Ah e isso aí do ROT-13 que o sekkuar falou... não é muito eficiente... ou seja alguém que saiba ROT-13 pode decriptar o sistema... Mesmo que voce mescle ROT-13 e md5... existem vaios decriptadores de md5 na net e códigos eficientes pra isso, e o ROT-13 é relativamente facil de descobrir... Abraço...
GOSTEI 0
Douglas Eric

Douglas Eric

09/04/2009

[quote="Nahalem"] não é muito eficiente... ou seja alguém que saiba ROT-13 pode decriptar o sistema...
[img]http://trollcats.com/wp-content/uploads/2009/10/thank_you_captain_obvious_trollcat.jpg[/img]
GOSTEI 0
Jonatas Carlos

Jonatas Carlos

09/04/2009

Sekkuar... Sem essas brincadeiras por favor... (apesar de ter sido um pouquinho engraçado)
GOSTEI 0
Wellington

Wellington

09/04/2009

[quote="Laranjinha"]Tenho essa locura aqui.... show de Bola...

import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;


public class CriptografiaLogix {
	private String usuario;
	private String senha;

	public CriptografiaLogix() {
	}

	public CriptografiaLogix(String usuario, String senha) {
		this.criptografaLogin(usuario, senha);
	}

	public String criptografaLogin(String codUsuario, String senha) {

		String senhaResult;
		String arrumaResult = new String("");

		StringBuffer codUsuarioAsciiAux;
		StringBuffer senhaAsciiAux;
		StringBuffer senhaResultAux;
		StringBuffer valorAscii;
		StringBuffer shortBuffer;

		Short codUsuarioShort;
		Short senhaShort;
		Short shortAux;

		short somaSenha = 0;

		codUsuarioAsciiAux = new StringBuffer("000000000000000000000000");
		senhaAsciiAux = new StringBuffer("000000000000000000000000");
		valorAscii = new StringBuffer("000000000000000000000000");

		int ind2 = 1;
		for (int ind1 = codUsuario.length(); ind1 >= 1; ind1--) {
			codUsuarioAsciiAux.replace(
				ind2 - 1,
				ind2 + 1,
				obtemValorAscii(codUsuario.substring(ind1 - 1)));
			ind2 = ind2 + 3;

		}

		codUsuarioAsciiAux.setLength(24);
		// Truncando p/ os 24 caracteres da criptografia
		this.usuario = (String) codUsuarioAsciiAux.toString();
		// Obtendo usuario criptografado

		ind2 = 1;
		for (int ind1 = 0; ind1 < senha.length(); ind1++) {
			senhaAsciiAux.replace(
				ind2 - 1,
				ind2 + 1,
				obtemValorAscii(senha.substring(ind1)));
			ind2 = ind2 + 3;
		}

		senhaAsciiAux.setLength(24);
		// Truncando p/ os 24 caracteres da criptografia

		for (int ind1 = 0; ind1 < 22; ind1 += 3) {
			codUsuarioShort =
				new Short(
					codUsuarioAsciiAux.substring(ind1, ind1 + 3).toString());
			senhaShort =
				new Short(senhaAsciiAux.substring(ind1, ind1 + 3).toString());
			somaSenha =
				(short) (codUsuarioShort.shortValue()
					+ senhaShort.shortValue());
			shortAux = new Short(somaSenha);
			arrumaResult = Short.toString(shortAux.shortValue());
			if ((arrumaResult != null) && (arrumaResult.length() == 2)) {
				arrumaResult = "0" + arrumaResult;
			}
			valorAscii.replace(ind1, ind1 + 2, arrumaResult);
			// System.out.println("1 : "+ shortAux.shortValue());//teste2
			// System.out.println("2 : " + valorAscii.toString()); //teste3
		}

		valorAscii.setLength(24);
		//Truncando p/ os 24 caracteres da criptografia do Logix

		senhaResult = (String) valorAscii.toString();
		this.senha = senhaResult;
		// Obtendo senha criptografada
		return senhaResult;
	}

	public String decriptografarSenha(String usuario, String senhaCripto) throws java.lang.NumberFormatException {
		String senhaResult;
		String arrumaResult = new String("");

		StringBuffer codUsuarioAsciiAux;
		String usuarioAscii;
		StringBuffer senhaAsciiAux;
		StringBuffer senhaResultAux;
		StringBuffer valorAscii;

		Short codUsuarioShort;
		Short shortAux;
		Short senhaCriptoShort;

		short diminuiSenha = 0;

		codUsuarioAsciiAux = new StringBuffer("000000000000000000000000");
		senhaAsciiAux = new StringBuffer("000000000000000000000000");
		senhaResultAux = new StringBuffer("000000000000000000000000");
		valorAscii = new StringBuffer(senhaCripto);

		int ind2 = 1;
		for (int ind1 = usuario.length(); ind1 >= 1; ind1--) {
			codUsuarioAsciiAux.replace(
				ind2 - 1,
				ind2 + 1,
				obtemValorAscii(usuario.substring(ind1 - 1)));
			ind2 = ind2 + 3;

		}

		codUsuarioAsciiAux.setLength(24);
		// Truncando p/ os 24 caracteres da criptografia
		usuarioAscii = (String) codUsuarioAsciiAux.toString();
		// Obtendo usuario criptografado

		for (int ind1 = 0; ind1 < 22; ind1 += 3) {
			codUsuarioShort = new Short(codUsuarioAsciiAux.substring(ind1, ind1 + 3).toString());
			senhaCriptoShort = new Short(valorAscii.substring(ind1,ind1+3).toString());
			diminuiSenha =	(short) (senhaCriptoShort.shortValue() - codUsuarioShort.shortValue());
			shortAux = new Short(diminuiSenha);
			arrumaResult = Short.toString(shortAux.shortValue());
			if ((arrumaResult != null) && (arrumaResult.length() == 2)) {
				arrumaResult = "0" + arrumaResult;
			}
			senhaResultAux.replace(ind1, ind1 + 2, arrumaResult);
			// System.out.println("1 : "+ shortAux.shortValue());//teste2
			// System.out.println("2 : " + valorAscii.toString()); //teste3
		}

		senhaResultAux.setLength(24);
		//Truncando p/ os 24 caracteres da criptografia
		senhaResult="";
        try {
        
	        for(int ind1=0;ind1<22;ind1 +=3){
	           String aux = String.valueOf((char) new Short(senhaResultAux.substring(ind1, ind1 + 3).toString()).intValue());
	           if((Character.isLetterOrDigit(aux.charAt(0)))){
	           	     senhaResult += aux;
	           }	
	        } 
        } catch(Exception ex) {
			return "000000000";
        }

		return senhaResult;
	}

	public String obtemValorAscii(String caracterString) {
		Character caracter;
		Character caracter2;
		Character caracter3;
		Character caracter4;

		String caracterAux;
		String resultCharacter;

		StringBuffer valorAscii;

		int compara = 0;

		short posIni = 0;
		short posFim = 0;
		short comparador = 0;

		byte valorAsciiAux;

		posIni = (short) 32;
		posFim = (short) 126;
	    caracter = new Character(caracterString.charAt(0));
        caracter2 = new Character('0');
		caracter3 = new Character('A');
		caracter4 = new Character('a');

		valorAscii = new StringBuffer();

		compara = caracter.compareTo(caracter2);
		// Retorna 0 (zero) se for igual numericamente
		// Retorna um numero menor que zero se for menor numericamente
		// Retorna um numero maior que zero se for maior numericamente

		if (compara == 0 || compara > 0) {
			posIni = (short) 48;
			compara = caracter.compareTo(caracter3);
			if (compara == 0 || compara > 0) {
				posIni = (short) 65;
				compara = caracter.compareTo(caracter4);
				if (compara == 0 || compara > 0) {
					posIni = (short) 97;
				} else {
					posFim = (short) 90;
				}
			} else {
				posFim = (short) 90;
			}
		} else {
			posFim = (short) 47;
		}

		for (int i = posIni; i <= posFim; i++) {
			caracterAux = caracter.toString();
			valorAsciiAux = (byte) caracterAux.charAt(0);
			comparador = valorAsciiAux;
			if (comparador == i) {
				if (comparador < 100) {
					valorAscii.append("0").append(i);
					// apenas para fazer igual ao 4GL USING &&&
				} else {
					valorAscii.append(i);
				}
			}
		}
		resultCharacter = new String(valorAscii);
		return resultCharacter;
	}

	public String descriptografaUsuario(String usuarioCriptografado) {

		Byte byteAux = null;
		StringBuffer retornoAux = null;
		String stringAux;
		String retorno = "";

		char[] charAux = new char[1];

		retornoAux = new StringBuffer();

		for (int i = 0; i < usuarioCriptografado.length(); i = i + 3) {
			stringAux = usuarioCriptografado.substring(i, i + 3);
			byteAux = new Byte(stringAux);
			charAux[0] = (char) byteAux.byteValue();
			stringAux = new String(charAux);
			retornoAux.append(stringAux);
		}

		retornoAux.reverse();
		retorno = new String(retornoAux.toString());

		return retorno;
	}

	public String getUsuarioCriptografado() {
		return this.usuario.toString();
	}

	public String getSenhaCriptografada() {
		return this.senha.toString();
	}

	public static String criptografaSenha(String senha) {
		MessageDigest md = null;
		String password = new String(senha);
		try {
			md = MessageDigest.getInstance("SHA-1");
		} catch (NoSuchAlgorithmException _exNSAE) {
			System.out.println(
				"Algoritmo de criptografia n�o encontrado. \n Execu��o abortada.");
			System.exit(0);
		}
		md.reset();
		md.update(password.getBytes());
		byte[] digest1 = md.digest();

		StringBuffer encryptedPassword = new StringBuffer();
		for (int i = 0; i < digest1.length; i++) {
			encryptedPassword.append(Integer.toHexString(0xFF & digest1[i]));
		}
		return encryptedPassword.toString();
	}

	static void escreve(String str) {
		System.out.println(str);
	}

	public static void main(String[] args) {
		String user = "Laranjinha";
		String pass = "uHjWdg5";
		CriptografiaLogix cripto = new CriptografiaLogix(user, pass);
		escreve("Testes de senha");
		escreve("Usuario    : " + user);
		escreve("Senha Plana: " + pass);
		escreve("Senha Banco: " + cripto.getSenhaCriptografada());
		escreve("Senha      : " + cripto.decriptografarSenha(user,cripto.getSenhaCriptografada()));
		escreve("Usuário    : " + cripto.descriptografaUsuario(cripto.getUsuarioCriptografado()));
		escreve("#####################################");
		escreve("");
		escreve("FIM");
	}

}
kara o meu ta cortando as duas primeiras letras do usuário.. o que fiz errado? Testes de senha Usuario : wellington Senha Plana: abcdef Senha Banco: 207209215203211207108108 Senha : abcdef Usuário : llington ##################################### FIM [b]
GOSTEI 0
Douglas Eric

Douglas Eric

09/04/2009

[quote="wellingtonfoz"] kara o meu ta cortando as duas primeiras letras do usuário.. o que fiz errado?
Meio dificil de descobrir sem ver o que você fez :)
GOSTEI 0
POSTAR