Criptografar/descriptografar ao armazenar senhas no .txt

3 respostas
A

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)

3 Respostas

O

de uma olhada nessa lib http://www.jasypt.org/, ela é muito simples e fácil

T

Aqui um exemplo muito bom usando o jasypt-1.7.1
Agora é só aplicar da sua maneira.

import org.jasypt.util.text.BasicTextEncryptor;
 
public class CriptografiaeDescriptografia {
	public static void main(String[] args) {
        String Digiteumasenha = "senha";
   
        BasicTextEncryptor bte = new BasicTextEncryptor();
 
        bte.setPassword("codigodesuapreferencia");
 
        String senhacriptografada = bte.encrypt(senha);
 
        String senhadescriptografada = bte.decrypt(senhacriptografada);
        
        System.out.println(senhacriptografada);
        System.out.println(senhadescriptografado);
        
    }
 
}

Espero ter ajudado :D .

A

Teclas33.....
eu tentei implementa mas tem como vc me da uma ajuda no como eu vou tratar o retorno para fazer as comparações?

package safeHistorical;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;

import javax.swing.JOptionPane;

import org.jasypt.util.text.BasicTextEncryptor;


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

		
		
		//AQUI TAVA TENTANDO LER CRIPTOGRAFADO
		
		
//		Arraylist senhas = new ArrayList();
//		BasicTextEncryptor bte = new BasicTextEncryptor();  
//
//		while (arquivo.ready){
//		string sd = arquivo.readline();
//		String blah = bte.decrypt(sd);
//		senhas.add(blah);
//		}

		
		
		
		
		
		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);
		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 cadastrarSenha(ArrayList<String> senhas, String usuario) {
		try{
			
			
			String arquivo = usuario+"senha.txt";
 // AQUI É O INICIO DA CRYPTOGRAFIA
		     
//	        BasicTextEncryptor bte = new BasicTextEncryptor();  
//	  
//	        bte.setPassword("SHA - 512");  
//	  
//	        String sc = bte.encrypt(arquivo);  
//	  
//	        String sd = bte.decrypt(sc);  
//	          senhas.add(sc);
//	        System.out.print(sc);  
//	        System.out.print(sd);  
	        
	        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);  
		}
		
	}
	
}
Criado 9 de julho de 2011
Ultima resposta 10 de jul. de 2011
Respostas 3
Participantes 3