Por que não é possível descriptografar a senha?

Olá, faz algum tempo que eu estou fazendo um programa para gerenciar contas no num banco de dados mysql que eu tenho aqui, já testei, tudo funciona corretamente, é possível fazer cadastro e login sem problemas, porém eu decidi criptografar a senha agora no banco de dados, a dias eu estou estudando todas as maneiras de fazer isso em java, não consegui de maneira alguma, então eu descobri as funções de aes_encrypt e aes_decrypt do mysql, na linha de comando eu consegui criptografar e descriptografar tranquilamente, porém eu não estou conseguindo fazer isso no java de maneira alguma, o campo senha que estou utilizando, é um varbinary, quando eu registro e dou um select, é retornado blob, e se eu dou um select descriptografando é retornado um campo vazio, aqui está a classe que eu uso para fazer todo o registro e comunicação com o banco:
`

package mysql;

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;

import javax.swing.BorderFactory;
import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JProgressBar;
import LookAndFeel.TKFLookAndFeel;
import ftp.FTP;
import objetos.Funcionario;
import objetos.UsuarioFisico;
import objetos.UsuarioJuridico;

public class ComunicacaoBanco implements ActionListener {
	private final String url = "jdbc:mysql://localhost/tkf";
	public static Connection conexao = null;
	static JDialog registrando = new JDialog();
	private TKFLookAndFeel look = new TKFLookAndFeel();
	static JDialog registrou = new JDialog();
	boolean bexecutar = true;
	boolean erro2 = true;
	JDialog erro = new JDialog();
	JButton terminar = new JButton("Ok, entendi");
	JButton ok = new JButton("OK");
	public static JProgressBar progressBar = new JProgressBar();

	public ComunicacaoBanco() {
		try {
			conexao = DriverManager.getConnection(url, "root", "thallysson");
			System.out.println("Conectou");
		} catch (SQLException e) {
			e.printStackTrace();
		}
	}

	public void Registrar(UsuarioFisico usuario) {
		String sql = "INSERT INTO contasfisicas VALUES(default,?,?,?,?,AES_ENCRYPT(?,?),?,?,?,?,?,?,?,?,?,?,?);";
		PreparedStatement executar = null;
		try {
			executar = conexao.prepareStatement(sql);
			
			if (usuario.getNomeDeUsuario() != null) {
				executar.setString(1, usuario.getNomeDeUsuario());
			} else {
				executar.close();
				System.out.println("A operacao falhou por que o nome de usuario nao pode seu nulo");
				bexecutar = false;
			}
			if (usuario.getNome() != null) {
				executar.setString(2, usuario.getNome());
			} else {
				executar.close();
				System.out.println("A operacao falhou por que o nome nao pode seu nulo");
				bexecutar = false;
			}
			if (usuario.getSobrenome() != null) {
				executar.setString(3, usuario.getSobrenome());
			} else {
				executar.close();
				System.out.println("A operacao falhou por que o sobrenome nao pode seu nulo");
				bexecutar = false;
			}
			if (usuario.getEmail() != null) {
				executar.setString(4, usuario.getEmail());
			} else {
				executar.close();
				System.out.println("A operacao falhou por que o email nao pode seu nulo");
				bexecutar = false;
			}
			
			if (usuario.getSenha() != null) {
				executar.setString(5, usuario.getSenha());
				executar.setBytes(6, new String("key").getBytes());
			} else {
				executar.close();
				System.out.println("A operacao falhou por que a senha nao pode seu nula");
				bexecutar = false;
			}
			if (usuario.getNasc() != null) {
				executar.setDate(7, new java.sql.Date(usuario.getNasc().getTime()));
			} else {
				executar.close();
				System.out.println("A operacao falhou por que a data de nascimento nao pode seu nula");
				bexecutar = false;
			}
			executar.setString(8, usuario.getTelefone());
			if (usuario.getSexo()) {
				executar.setString(9, "M");
			} else {
				executar.setString(9, "F");
			}
			if (usuario.getNacionalidade() != null) {
				executar.setString(10, usuario.getNacionalidade());
			} else {
				executar.close();
				System.out.println("A operacao falhou por que a nacionalidade nao pode seu nula");
				bexecutar = false;
			}
			if (usuario.getCep() != 0) {
				executar.setInt(11, usuario.getCep());
			} else {
				executar.setString(11, null);
			}
			if (usuario.getCpf() != 0) {
				executar.setInt(12, usuario.getCpf());
			} else {
				executar.setString(12, null);
			}
			if (usuario.getSobre() != null && usuario.getSobre() != "") {
				executar.setString(13, usuario.getSobre());
			} else {
				executar.setString(13, null);
			}
			try {
				if (usuario.getFoto().toString() != null) {
					JDialog processoenviar = new JDialog();
					String nomecompleto = usuario.getFoto().getName();
					String extensao = nomecompleto.substring(nomecompleto.lastIndexOf("."), nomecompleto.length());
					FTP upload = new FTP();
					if (bexecutar) {
						new Thread(new Runnable() {
							public void run() {
								processoenviar.setLayout(new BorderLayout());
								processoenviar.setUndecorated(true);
								processoenviar.setModal(true);
								JLabel ti = new JLabel("Enviando sua imagem:");
								JPanel contentpanelz = new JPanel(new BorderLayout());
								contentpanelz.add(ti, BorderLayout.NORTH);
								progressBar.setPreferredSize(new Dimension(0, 30));
								progressBar.setMinimum(0);
								progressBar.setValue(0);
								progressBar.setStringPainted(true);
								contentpanelz.add(progressBar, BorderLayout.CENTER);
								processoenviar.setContentPane(contentpanelz);
								look.formatar(processoenviar, null);
								processoenviar.setLocationRelativeTo(null);
								processoenviar.setVisible(true);
							}
						}).start();
						upload.upload("localhost", "/TKF/Physical-Accounts/" + usuario.getNomeDeUsuario(),
								usuario.getFoto().toString(), "eu", "thallysson", usuario.getNomeDeUsuario());
					}
					String caminhoImagem = "/TKF/Physical-Accounts/" + usuario.getNomeDeUsuario() + "/perfil"
							+ extensao;
					executar.setString(14, caminhoImagem);
					processoenviar.dispose();
				}
			} catch (NullPointerException erro) {
				executar.setString(14, null);
				System.out.println("nullpointerexception");
			}
			executar.setDate(15, new java.sql.Date(new Date().getTime()));
			executar.setString(16, usuario.getCodigo());
			executar.setString(17, usuario.getPergunta());
			if (bexecutar) {
				new Thread(new Runnable() {
					public void run() {
						JPanel content = new JPanel(new BorderLayout());
						registrando.setUndecorated(true);
						JLabel label = new JLabel("Registrando seus dados...");
						content.add(label, BorderLayout.CENTER);
						content.setBorder(BorderFactory.createEtchedBorder(Color.BLACK, Color.BLACK));
						registrando.setContentPane(content);
						look.formatar(registrando, null);
						registrando.setLocationRelativeTo(null);
						registrando.setVisible(true);
					}
				}).start();
				try {
					executar.executeUpdate();
				} catch (Exception erro) {
					erro.printStackTrace();
					erro2 = false;
					registrando.dispose();
				}
			} else {
				erro2 = false;
			}

			executar.close();
			if (erro2) {
				ok.addActionListener(this);
				registrou.setModal(true);
				JPanel content = new JPanel(new BorderLayout());
				JPanel content2 = new JPanel(new FlowLayout());
				registrou.setUndecorated(true);
				JLabel label2 = new JLabel("Seus dados foram registrados com exito!");
				content.add(label2, BorderLayout.CENTER);
				content2.add(ok);
				content.add(content2, BorderLayout.SOUTH);
				content.setBorder(BorderFactory.createEtchedBorder(Color.BLACK, Color.BLACK));
				registrou.setContentPane(content);
				look.formatar(registrou, null);
				registrou.setLocationRelativeTo(null);
				registrou.setVisible(true);
			} else {
				JLabel rotulo = new JLabel(
						"<html><center>Ocorreu um erro desconhecido ao registrar seus dados,<br/>Tente novamente</center><html>");
				terminar.addActionListener(this);
				JPanel pterminar = new JPanel(new FlowLayout());
				erro.setLayout(new BorderLayout());
				erro.add(rotulo, BorderLayout.CENTER);
				pterminar.add(terminar);
				erro.add(pterminar, BorderLayout.SOUTH);
				look.formatar(erro, null);
				erro.setLocationRelativeTo(null);
				erro.setVisible(true);
			}
		} catch (SQLException e) {
			e.printStackTrace();
		}
	}

	public void Registrar(UsuarioJuridico usuario, ArrayList<Funcionario> funcionarios) {
		String sql = "INSERT INTO contasjuridicas VALUES(default,?,?,AES_ENCRYPT(?,contasjuridicas.nomedaempresa),?,?,?,?,?,?,?,?,?);";
		PreparedStatement executar = null;
		try {
			executar = conexao.prepareStatement(sql);
			if (usuario.getNomeResp() != null) {
				executar.setString(1, usuario.getNomeResp());
			} else {
				executar.close();
				System.out.println("A operacao falhou por que o nomeresp nao pode seu nulo");
				bexecutar = false;
			}
			if (usuario.getNome() != null) {
				executar.setString(2, usuario.getNome());
			} else {
				executar.close();
				System.out.println("A operacao falhou por que o nome nao pode seu nulo");
				bexecutar = false;
			}
			if (usuario.getSenha() != null) {
				executar.setString(3, usuario.getSenha());
			} else {
				executar.close();
				System.out.println("A operacao falhou por que a senha nao pode seu nula");
				bexecutar = false;
			}
			executar.setString(4, usuario.getNacionalidade());
			if (usuario.getCnpj() != 0) {
				executar.setInt(5, usuario.getCnpj());
			} else {
				executar.setString(5, null);
			}
			if (usuario.getDescricao() != null) {
				executar.setString(6, usuario.getDescricao());
			}
			try {
				if (usuario.getLogo() != null) {
					JDialog processoenviar = new JDialog();
					String nomecompleto = usuario.getLogo().getName();
					String extensao = nomecompleto.substring(nomecompleto.lastIndexOf("."), nomecompleto.length());
					FTP upload = new FTP();
					if (bexecutar) {
						new Thread(new Runnable() {
							public void run() {
								processoenviar.setLayout(new BorderLayout());
								processoenviar.setUndecorated(true);
								processoenviar.setModal(true);
								JLabel ti = new JLabel("Enviando sua imagem:");
								JPanel contentpanelz = new JPanel(new BorderLayout());
								contentpanelz.add(ti, BorderLayout.NORTH);
								progressBar.setPreferredSize(new Dimension(0, 30));
								progressBar.setMinimum(0);
								progressBar.setValue(0);
								progressBar.setStringPainted(true);
								contentpanelz.add(progressBar, BorderLayout.CENTER);
								processoenviar.setContentPane(contentpanelz);
								look.formatar(processoenviar, null);
								processoenviar.setLocationRelativeTo(null);
								processoenviar.setVisible(true);
							}
						}).start();
						upload.upload("localhost", "/TKF/Legal-Accounts/" + usuario.getNome(),
								usuario.getLogo().toString(), "eu", "thallysson", usuario.getNome());
					}
					String caminhoImagem = "/TKF/Legal-Accounts/" + usuario.getNome() + "/perfil" + extensao;
					executar.setString(7, caminhoImagem);
					processoenviar.dispose();
				} else {
					executar.setString(7, null);
				}
			} catch (NullPointerException erro) {
				erro.printStackTrace();
				System.out.println("Ocorreu u null pointer exception");
			}

			if (usuario.getEmail() != null) {
				executar.setString(8, usuario.getEmail());
			} else {
				executar.close();
				System.out.println("A operacao falhou porque o email nao pode ser nulo");
				bexecutar = false;
			}
			executar.setString(9, usuario.getTelefone());
			executar.setDate(10, new java.sql.Date(new Date().getTime()));
			if (usuario.getCodigo() != null) {
				executar.setString(11, usuario.getCodigo());
			} else {
				executar.setString(11, null);
			}
			if (usuario.getPergunta() != null) {
				executar.setString(12, usuario.getPergunta());
			} else {
				executar.setString(12, null);
			}
			if (bexecutar) {
				new Thread(new Runnable() {
					public void run() {
						JPanel content = new JPanel(new BorderLayout());
						registrando.setUndecorated(true);
						JLabel label = new JLabel("Registrando seus dados...");
						content.add(label, BorderLayout.CENTER);
						content.setBorder(BorderFactory.createEtchedBorder(Color.BLACK, Color.BLACK));
						registrando.setContentPane(content);
						look.formatar(registrando, null);
						registrando.setLocationRelativeTo(null);
						registrando.setVisible(true);
					}
				}).start();
				try {
					executar.executeUpdate();
				} catch (Exception erro) {
					erro.printStackTrace();
					erro2 = false;
					registrando.dispose();
				}
			} else {
				erro2 = false;
			}

			executar.close();
			if (erro2) {
				ok.addActionListener(this);
				registrou.setModal(true);
				JPanel content = new JPanel(new BorderLayout());
				JPanel content2 = new JPanel(new FlowLayout());
				registrou.setUndecorated(true);
				JLabel label2 = new JLabel("Seus dados foram registrados com exito!");
				content.add(label2, BorderLayout.CENTER);
				content2.add(ok);
				content.add(content2, BorderLayout.SOUTH);
				content.setBorder(BorderFactory.createEtchedBorder(Color.BLACK, Color.BLACK));
				registrou.setContentPane(content);
				look.formatar(registrou, null);
				registrou.setLocationRelativeTo(null);
				registrou.setVisible(true);
			} else {
				JLabel rotulo = new JLabel(
						"<html><center>Ocorreu um erro desconhecido ao registrar seus dados,<br/>Tente novamente</center><html>");
				terminar.addActionListener(this);
				JPanel pterminar = new JPanel(new FlowLayout());
				erro.setLayout(new BorderLayout());
				erro.add(rotulo, BorderLayout.CENTER);
				pterminar.add(terminar);
				erro.add(pterminar, BorderLayout.SOUTH);
				look.formatar(erro, null);
				erro.setLocationRelativeTo(null);
				erro.setVisible(true);
			}
			if (funcionarios != null) {
				String sql2 = "SELECT LAST_INSERT_ID() INTO @id;";
				PreparedStatement smt = conexao.prepareStatement(sql2);
				ResultSet rs = smt.executeQuery();
				if (rs.next()) {
					int idempresa = rs.getInt(1);
					System.out.println("id = " + idempresa);
					for (Funcionario funcionario : funcionarios) {
						if (funcionario.getNome() != null && funcionario.getSenha() != null) {
							String sql3 = "INSERT INTO funcionarios VALUES(default,@id,?,AES_ENCRYPT(?,funcionarios.nome),?,?,?,?,?)";
							PreparedStatement inserirfunc = conexao.prepareStatement(sql3);
							String nome = funcionario.getNome();
							nome = nome.substring(0, 1).toUpperCase().concat(nome.substring(1));
							inserirfunc.setString(1, nome);
							inserirfunc.setString(2, funcionario.getSenha());
							SimpleDateFormat df = new SimpleDateFormat("dd/MM/yyyy");
							java.util.Date dataUtil = null;
							try {
								dataUtil = df.parse(funcionario.getNasc());
							} catch (ParseException e) {
								e.printStackTrace();
							}
							inserirfunc.setDate(3, new java.sql.Date(dataUtil.getTime()));
							if (funcionario.getSexo() == "Masculino") {
								inserirfunc.setString(4, "M");
							} else if (funcionario.getSexo() == "Feminino") {
								inserirfunc.setString(4, "F");
							}
							inserirfunc.setString(5, funcionario.getNacionalidade());
							try {
								if (funcionario.getCpf().contains("0") || funcionario.getCpf().contains("1")
										|| funcionario.getCpf().contains("2") || funcionario.getCpf().contains("3")
										|| funcionario.getCpf().contains("4") || funcionario.getCpf().contains("5")
										|| funcionario.getCpf().contains("6") || funcionario.getCpf().contains("7")
										|| funcionario.getCpf().contains("8") || funcionario.getCpf().contains("9")) {

									String cpf = funcionario.getCpf();
									cpf = cpf.replace(".", "");
									cpf = cpf.replace("-", "");
									inserirfunc.setInt(6, Integer.parseInt(cpf));
								} else {
									inserirfunc.setString(6, null);
								}
							} catch (NullPointerException erro) {
								inserirfunc.setString(6, null);
							}
							if (funcionario.getImagem() != null) {
								JDialog processoenviar = new JDialog();
								String nomecompleto = funcionario.getImagem().getName();
								String extensao = nomecompleto.substring(nomecompleto.lastIndexOf("."),
										nomecompleto.length());
								FTP upload = new FTP();
								if (bexecutar) {
									new Thread(new Runnable() {
										public void run() {
											processoenviar.setLayout(new BorderLayout());
											processoenviar.setUndecorated(true);
											processoenviar.setModal(true);
											JLabel ti = new JLabel("Enviando sua imagem:");
											JPanel contentpanelz = new JPanel(new BorderLayout());
											contentpanelz.add(ti, BorderLayout.NORTH);
											progressBar.setPreferredSize(new Dimension(0, 30));
											progressBar.setMinimum(0);
											progressBar.setValue(0);
											progressBar.setStringPainted(true);
											contentpanelz.add(progressBar, BorderLayout.CENTER);
											processoenviar.setContentPane(contentpanelz);
											look.formatar(processoenviar, null);
											processoenviar.setLocationRelativeTo(null);
											processoenviar.setVisible(true);
										}
									}).start();
									upload.upload("localhost",
											"/TKF/Legal-Accounts/" + usuario.getNome() + "/Workers/"
													+ funcionario.getNome(),
											funcionario.getImagem().toString(), "eu", "thallysson", usuario.getNome());
								}
								String caminhoImagem = "/TKF/Legal-Accounts/" + usuario.getNome() + "/Workers/"
										+ funcionario.getNome() + "/perfil" + extensao;
								inserirfunc.setString(7, caminhoImagem);
								processoenviar.dispose();
							} else {
								inserirfunc.setString(7, null);
							}
							if (bexecutar) {
								inserirfunc.executeUpdate();
							}
						}
					}
				}
			}
		} catch (SQLException erro) {
			erro.printStackTrace();
		}
	}

	public boolean verificaRegistroFisico(String valor) {
		JDialog verificando = new JDialog();
		verificando.setUndecorated(true);
		JPanel content = new JPanel(new BorderLayout());
		content.setBorder(BorderFactory.createEtchedBorder(Color.BLACK, Color.BLACK));
		JLabel mensagen = new JLabel("Verificando Registro");
		content.add(mensagen, BorderLayout.CENTER);
		verificando.setContentPane(content);
		look.formatar(verificando, null);
		verificando.setLocationRelativeTo(null);
		verificando.setVisible(true);
		String sql = "select * from contasfisicas where nomedeusuario = '" + valor + "';";
		PreparedStatement stm = null;
		boolean retorno = false;
		try {
			stm = conexao.prepareStatement(sql);
		} catch (SQLException e) {
			e.printStackTrace();
		}
		ResultSet resultado = null;
		try {
			resultado = stm.executeQuery();
		} catch (SQLException e) {
			e.printStackTrace();
		}
		try {
			if (resultado.next()) {
				retorno = true;
			} else {
				retorno = false;
			}
		} catch (SQLException e) {
			e.printStackTrace();
		}
		verificando.dispose();
		return retorno;
	}

	public void actionPerformed(ActionEvent evento) {
		if (evento.getSource() == terminar) {
			erro.dispose();
		}
		if (evento.getSource() == ok) {
			registrou.dispose();
			registrando.dispose();
		}
	}

	public boolean verificaRegistroJuridico(String valor) {
		JDialog verificando = new JDialog();
		verificando.setUndecorated(true);
		JPanel content = new JPanel(new BorderLayout());
		content.setBorder(BorderFactory.createEtchedBorder(Color.BLACK, Color.BLACK));
		JLabel mensagen = new JLabel("Verificando Registro");
		content.add(mensagen, BorderLayout.CENTER);
		verificando.setContentPane(content);
		look.formatar(verificando, null);
		verificando.setLocationRelativeTo(null);
		verificando.setVisible(true);
		String sql = "select * from contasjuridicas where nomedaempresa = '" + valor + "';";
		PreparedStatement stm = null;
		boolean retorno = false;
		try {
			stm = conexao.prepareStatement(sql);
		} catch (SQLException e) {
			e.printStackTrace();
		}
		ResultSet resultado = null;
		try {
			resultado = stm.executeQuery();
		} catch (SQLException e) {
			e.printStackTrace();
		}
		try {
			if (resultado.next()) {
				retorno = true;
			} else {
				retorno = false;
			}
		} catch (SQLException e) {
			e.printStackTrace();
		}
		verificando.dispose();
		return retorno;
	}
}`

O comando que eu digito e é retornado um campo vazio é o seguinte:
SELECT senha, cast(AES_DECRYPT(senha,'key')as char) decodificado FROM contasfisicas;
Alguém pode me ajudar a resolver esse problema?

1 curtida

Me parece que você esta usando funções do banco para criptografar a senha. Procure na API do Java ou alguma bliblioteca que faça isso. Armazene a senha em um campo tipo VARCHAR(255). Você não precisa saber a senha do usuário. Use hash de mão única O usuário digita a senha:

senha124566

O código Java gera o hash

0xxg2hgfyrgfyr6764567456hfrhg

Você salva no banco

Depois quando o usuário digitar novamente, você compara
hash com hash

0xxg2hgfyrgfyr6764567456hfrhg = 0xxg2hgfyrgfyr6764567456hfrhg

Pesquise sobre a API: javax.security


Veja este artigo: Guardando senhas criptografadas em Java

3 curtidas

Bom, como eu falei eu já tentei fazer isso no java, não consegui, porque eu registro um hash e na hora de fazer o login, a senha criptografada da diferente da que está no banco mesmo sendo correta, e eu estava usando essa api.

Antes eu havia feito essa classe para isso:

package objetos;

import java.security.InvalidKeyException;
import java.security.NoSuchAlgorithmException;

import javax.crypto.BadPaddingException;
import javax.crypto.Cipher;
import javax.crypto.IllegalBlockSizeException;
import javax.crypto.KeyGenerator;
import javax.crypto.NoSuchPaddingException;
import javax.crypto.SecretKey;

public class CriptografarSenha {
	public static String criptografar(String senha) {
		KeyGenerator gerador;
		try {
			gerador = KeyGenerator.getInstance("AES");
			SecretKey secreta = gerador.generateKey();
			Cipher cifrador;
			cifrador = Cipher.getInstance("AES");
			cifrador.init(Cipher.ENCRYPT_MODE, secreta);
			byte[] senhacriptografada = cifrador.doFinal(senha.getBytes());
			return new String(senhacriptografada);
		} catch (NoSuchAlgorithmException | NoSuchPaddingException | InvalidKeyException | IllegalBlockSizeException
				| BadPaddingException e) {
			e.printStackTrace();
		}
		return null;
	}

	public static String descriptografar(String senha) {
		KeyGenerator gerador;
		try {
			gerador = KeyGenerator.getInstance("AES");
			SecretKey secreta = gerador.generateKey();
			Cipher cifrador;
			cifrador = Cipher.getInstance("AES");
			cifrador.init(Cipher.DECRYPT_MODE, secreta);
			byte[] senhadescriptografada = cifrador.doFinal(senha.getBytes());
			return new String(senhadescriptografada);
		} catch (NoSuchAlgorithmException | NoSuchPaddingException | InvalidKeyException | IllegalBlockSizeException
				| BadPaddingException e) {
			e.printStackTrace();
		}
		return null;
	}
}

Analisando o código, notei que o algoritimo AES gera uma hash diferente independentemente da senha ser a mesma. Use este aqui, que é um hash de mão única. É um algoritimo de 256 bits.

Fiz a classe para você, basta testar.

import java.io.UnsupportedEncodingException;

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

    public class Crypt {
        
        public static String hash(String password) {
            
            StringBuilder hexString = new StringBuilder();
            
            // concatenado com a senha do usuário, torna a senha mais segura
            // escolha o valor que quiser
            String salt = "x--;=-=0245007bx///;-l;0x0900--xy76-=[[]"; 
            
            MessageDigest algorithm = null;
            byte messageDigest[] = null;
            
            try {
                
                // concatena a senha do usuário com o salt
                password += salt;
                
                // seleciona o algoritmo de criptografia de mão única
                algorithm = MessageDigest.getInstance("SHA-256");
                
                // criptografa a senha (gera o hash), byte por byte
                messageDigest = algorithm.digest(password.getBytes("UTF-8"));
                
                // concatena os bytes em hexString
                for (byte b : messageDigest) {
                    hexString.append(String.format("%02X", 0xFF & b));
                }
                
            } catch (NoSuchAlgorithmException e) {
                e.printStackTrace();
                
            } catch (UnsupportedEncodingException e) {
                e.printStackTrace();
            }
        
            // converte para string e retorna o resultado
            return hexString.toString();    
        }
    }

    // Criei uma classe para teste
    public class CryptTest {
        public static void main(String[] args) {
            
            String password1 = Crypt.hash("senha123");
            
            String password2 = Crypt.hash("senha123");
            
            System.out.println(password1);
            System.out.println("\n\n");
            System.out.println(password2);
            
            if(!password1.equals(password2)) {
                System.out.println("Senha inválida!");
                return;
            }
            
            System.out.println("Senha correta!");
        }
    }
1 curtida

Eu fiz, tudo funcionou corretamente, porém a senha do login da diferente da do registro.

Para ser mais facil:

Classe do login:

package objetos;

import java.io.File;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import ftp.FTP;
import mysql.ComunicacaoBanco;

public class ObjetoLogin {
	ComunicacaoBanco banco;
	UsuarioFisico loginfisico = new UsuarioFisico();
	UsuarioJuridico loginjuridico = new UsuarioJuridico();

	boolean tipoLogin = true;

	public ObjetoLogin() {
		banco = new ComunicacaoBanco();
	}

	public String Logar(String nome, String senha) {
		String sql = "SELECT * FROM contasfisicas WHERE nomedeusuario='"+nome+"';";
		PreparedStatement executar = null;
		ResultSet resultado;
		try {
			executar = ComunicacaoBanco.conexao.prepareStatement(sql);
			resultado = executar.executeQuery();
			if (resultado.next()) {
				if (resultado.getString(6).equals(CriptografarSenha.criptografar(senha))) {
					loginfisico.setNomeDeUsuario(resultado.getString(2));
					loginfisico.setNome(resultado.getString(3));
					loginfisico.setSobrenome(resultado.getString(4));
					loginfisico.setEmail(resultado.getString(5));
					loginfisico.setSenha(resultado.getString(18));
					loginfisico.setNasc(resultado.getDate(7));
					loginfisico.setTelefone(resultado.getString(8));
					String sexo = resultado.getString(9);
					if (sexo == "M") {
						loginfisico.setSexo(true);
					} else if (sexo == "F") {
						loginfisico.setSexo(false);
					}
					loginfisico.setNacionalidade(resultado.getString(10));
					loginfisico.setCep(resultado.getInt(11));
					loginfisico.setCpf(resultado.getInt(12));
					loginfisico.setSobre(resultado.getString(13));
					if (resultado.getString(14) != null) {
						FTP ftp = new FTP();
						ftp.download("localhost", "eu", "thallysson",
								"/TKF/Physical-Accounts/" + loginfisico.getNomeDeUsuario() + "/perfil");
						loginfisico.setFoto(FTP.arquivo);
					}
					try {
						String codigo = resultado.getString(16);
						String pergunta = resultado.getString(17);
						if (codigo != null && pergunta != null) {
							loginfisico.setCodigo(codigo);
							loginfisico.setPergunta(pergunta);
						}
					} catch (NullPointerException e) {
						e.printStackTrace();
					}
					System.out.println(loginfisico.getNomeDeUsuario() + "\n" + loginfisico.getNome() + "\n"
							+ loginfisico.getSobrenome() + "\n" + loginfisico.getEmail() + "\n" + loginfisico.getSenha()
							+ "\n" + loginfisico.getNasc() + "\n" + loginfisico.getTelefone() + "\n"
							+ loginfisico.getSexo() + "\n" + loginfisico.getNacionalidade() + "\n"
							+ loginfisico.getCep() + "\n" + loginfisico.getCpf() + "\n" + loginfisico.getSobre() + "\n"
							+ loginfisico.getFoto().toString() + "\n" + loginfisico.getCodigo() + "\n"
							+ loginfisico.getPergunta() + "\n");
					tipoLogin = true;
					return "lf sucesso";
				} else {
					System.out.println(CriptografarSenha.criptografar(senha));
					System.out.println(resultado.getString(6));
					return "lf fracasso autentificacao";
				}
			} else {
				sql = "SELECT * FROM contasjuridicas WHERE nomedaempresa='" + nome + "'";
				executar = ComunicacaoBanco.conexao.prepareStatement(sql);
				resultado = executar.executeQuery();
				if (resultado.next()) {
					if (resultado.getString(4).equals(CriptografarSenha.criptografar(senha))) {
						loginjuridico.setNomeResp(resultado.getString(2));
						loginjuridico.setNome(resultado.getString(3));
						loginjuridico.setSenha(resultado.getString(4));
						loginjuridico.setNacionalidade(resultado.getString(5));
						if (resultado.getInt(6) != 0) {
							loginjuridico.setCnpj(resultado.getInt(6));
						}
						loginjuridico.setDescricao(resultado.getString(7));
						if (resultado.getString(8) != null) {
							FTP ftp = new FTP();
							ftp.download("localhost", "eu", "thallysson",
									"/TKF/Legal-Accounts/" + loginjuridico.getNome() + "/perfil");
							loginjuridico.setLogo(new File(FTP.path));
						}
						loginjuridico.setEmail(resultado.getString(9));
						loginjuridico.setTelefone(resultado.getString(10));
						if (resultado.getString(12) != null) {
							loginjuridico.setCodigo(resultado.getString(12));
						}
						if (resultado.getString(13) != null) {
							loginjuridico.setPergunta(resultado.getString(13));
						}
						String pesquisafuncionarios = "SELECT *, CAST(AES_DECRYPT(f.senha, f.nome) AS CHAR(10)) decodificado FROM funcionarios as f where " + "empresatkfid="
								+ resultado.getInt(1) + ";";
						PreparedStatement stm = ComunicacaoBanco.conexao.prepareStatement(pesquisafuncionarios);
						ResultSet result = stm.executeQuery();
						ArrayList<Funcionario> funcionarios = new ArrayList<Funcionario>();
						while (result.next()) {
							Funcionario funcionario = new Funcionario();
							funcionario.setNome(result.getString(3));
							funcionario.setSenha(result.getString(9));
							funcionario.setNasc(result.getString(5));
							if (result.getString(6) == "M") {
								funcionario.setSexo("Masculino");
							} else if (result.getString(6) == "F") {
								funcionario.setSexo("Feminino");
							}
							funcionario.setNacionalidade(result.getString(7));
							if (result.getString(8) != null) {
								funcionario.setCpf(result.getString(8));
							} else {
								funcionario.setCpf(null);
							}
							if (result.getString(9) != null) {
								FTP ftp = new FTP();
								ftp.download("localhost", "eu", "thallysson", "/TKF/Legal-Accounts/"
										+ loginjuridico.getNome() + "/" + funcionario.getNome() + "/perfil");
								funcionario.setImagem(FTP.arquivo);
							} else {
								funcionario.setImagem(null);
							}
							funcionarios.add(funcionario);
						}
						loginjuridico.setFuncionarios(funcionarios);
						for (Funcionario funcionario1 : funcionarios) {
							System.out.println();
							System.out.println(funcionario1.getNome());
							System.out.println(funcionario1.getSenha());
							System.out.println(funcionario1.getNasc());
							System.out.println(funcionario1.getSexo());
							System.out.println(funcionario1.getNacionalidade());
							System.out.println(funcionario1.getCpf());
							System.out.println(funcionario1.getImagem().toString());
							System.out.println();
						}
						System.out.println(loginjuridico.getNomeResp() + "\n" + loginjuridico.getNome() + "\n"
								+ loginjuridico.getSenha() + "\n" + loginjuridico.getNacionalidade() + "\n"
								+ loginjuridico.getCnpj() + "\n" + loginjuridico.getDescricao() + "\n"
								+ loginjuridico.getLogo().toString() + "\n" + loginjuridico.getEmail() + "\n"
								+ loginjuridico.getTelefone() + "\n" + loginjuridico.getCodigo() + "\n"
								+ loginjuridico.getPergunta() + "\n");
						tipoLogin = false;
						return "lj sucesso";
					} else {
						return "lj fracasso autentificacao";
					}
				} else {
					return "usuario inesistente";
				}
			}
		} catch (SQLException e) {
			e.printStackTrace();
		}
		return "bug";
	}
}

Classe do registro:

package mysql;

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;

import javax.swing.BorderFactory;
import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JProgressBar;
import LookAndFeel.TKFLookAndFeel;
import ftp.FTP;
import objetos.CriptografarSenha;
import objetos.Funcionario;
import objetos.UsuarioFisico;
import objetos.UsuarioJuridico;

public class ComunicacaoBanco implements ActionListener {
	private final String url = "jdbc:mysql://localhost/tkf";
	public static Connection conexao = null;
	static JDialog registrando = new JDialog();
	private TKFLookAndFeel look = new TKFLookAndFeel();
	static JDialog registrou = new JDialog();
	boolean bexecutar = true;
	boolean erro2 = true;
	JDialog erro = new JDialog();
	JButton terminar = new JButton("Ok, entendi");
	JButton ok = new JButton("OK");
	public static JProgressBar progressBar = new JProgressBar();

	public ComunicacaoBanco() {
		try {
			conexao = DriverManager.getConnection(url, "root", "thallysson");
			System.out.println("Conectou");
		} catch (SQLException e) {
			e.printStackTrace();
		}
	}

	public void Registrar(UsuarioFisico usuario) {
		String sql = "INSERT INTO contasfisicas VALUES(default,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?);";
		PreparedStatement executar = null;
		try {
			executar = conexao.prepareStatement(sql);
			
			if (usuario.getNomeDeUsuario() != null) {
				executar.setString(1, usuario.getNomeDeUsuario());
			} else {
				executar.close();
				System.out.println("A operacao falhou por que o nome de usuario nao pode seu nulo");
				bexecutar = false;
			}
			if (usuario.getNome() != null) {
				executar.setString(2, usuario.getNome());
			} else {
				executar.close();
				System.out.println("A operacao falhou por que o nome nao pode seu nulo");
				bexecutar = false;
			}
			if (usuario.getSobrenome() != null) {
				executar.setString(3, usuario.getSobrenome());
			} else {
				executar.close();
				System.out.println("A operacao falhou por que o sobrenome nao pode seu nulo");
				bexecutar = false;
			}
			if (usuario.getEmail() != null) {
				executar.setString(4, usuario.getEmail());
			} else {
				executar.close();
				System.out.println("A operacao falhou por que o email nao pode seu nulo");
				bexecutar = false;
			}
			
			if (usuario.getSenha() != null) {
				executar.setString(5, CriptografarSenha.criptografar(usuario.getSenha()));
			} else {
				executar.close();
				System.out.println("A operacao falhou por que a senha nao pode seu nula");
				bexecutar = false;
			}
			if (usuario.getNasc() != null) {
				executar.setDate(6, new java.sql.Date(usuario.getNasc().getTime()));
			} else {
				executar.close();
				System.out.println("A operacao falhou por que a data de nascimento nao pode seu nula");
				bexecutar = false;
			}
			executar.setString(7, usuario.getTelefone());
			if (usuario.getSexo()) {
				executar.setString(8, "M");
			} else {
				executar.setString(8, "F");
			}
			if (usuario.getNacionalidade() != null) {
				executar.setString(9, usuario.getNacionalidade());
			} else {
				executar.close();
				System.out.println("A operacao falhou por que a nacionalidade nao pode seu nula");
				bexecutar = false;
			}
			if (usuario.getCep() != 0) {
				executar.setInt(10, usuario.getCep());
			} else {
				executar.setString(10, null);
			}
			if (usuario.getCpf() != 0) {
				executar.setInt(11, usuario.getCpf());
			} else {
				executar.setString(11, null);
			}
			if (usuario.getSobre() != null && usuario.getSobre() != "") {
				executar.setString(12, usuario.getSobre());
			} else {
				executar.setString(12, null);
			}
			try {
				if (usuario.getFoto().toString() != null) {
					JDialog processoenviar = new JDialog();
					String nomecompleto = usuario.getFoto().getName();
					String extensao = nomecompleto.substring(nomecompleto.lastIndexOf("."), nomecompleto.length());
					FTP upload = new FTP();
					if (bexecutar) {
						new Thread(new Runnable() {
							public void run() {
								processoenviar.setLayout(new BorderLayout());
								processoenviar.setUndecorated(true);
								processoenviar.setModal(true);
								JLabel ti = new JLabel("Enviando sua imagem:");
								JPanel contentpanelz = new JPanel(new BorderLayout());
								contentpanelz.add(ti, BorderLayout.NORTH);
								progressBar.setPreferredSize(new Dimension(0, 30));
								progressBar.setMinimum(0);
								progressBar.setValue(0);
								progressBar.setStringPainted(true);
								contentpanelz.add(progressBar, BorderLayout.CENTER);
								processoenviar.setContentPane(contentpanelz);
								look.formatar(processoenviar, null);
								processoenviar.setLocationRelativeTo(null);
								processoenviar.setVisible(true);
							}
						}).start();
						upload.upload("localhost", "/TKF/Physical-Accounts/" + usuario.getNomeDeUsuario(),
								usuario.getFoto().toString(), "eu", "thallysson", usuario.getNomeDeUsuario());
					}
					String caminhoImagem = "/TKF/Physical-Accounts/" + usuario.getNomeDeUsuario() + "/perfil"
							+ extensao;
					executar.setString(13, caminhoImagem);
					processoenviar.dispose();
				}
			} catch (NullPointerException erro) {
				executar.setString(13, null);
				System.out.println("nullpointerexception");
			}
			executar.setDate(14, new java.sql.Date(new Date().getTime()));
			executar.setString(15, usuario.getCodigo());
			executar.setString(16, usuario.getPergunta());
			if (bexecutar) {
				new Thread(new Runnable() {
					public void run() {
						JPanel content = new JPanel(new BorderLayout());
						registrando.setUndecorated(true);
						JLabel label = new JLabel("Registrando seus dados...");
						content.add(label, BorderLayout.CENTER);
						content.setBorder(BorderFactory.createEtchedBorder(Color.BLACK, Color.BLACK));
						registrando.setContentPane(content);
						look.formatar(registrando, null);
						registrando.setLocationRelativeTo(null);
						registrando.setVisible(true);
					}
				}).start();
				try {
					executar.executeUpdate();
				} catch (Exception erro) {
					erro.printStackTrace();
					erro2 = false;
					registrando.dispose();
				}
			} else {
				erro2 = false;
			}

			executar.close();
			if (erro2) {
				ok.addActionListener(this);
				registrou.setModal(true);
				JPanel content = new JPanel(new BorderLayout());
				JPanel content2 = new JPanel(new FlowLayout());
				registrou.setUndecorated(true);
				JLabel label2 = new JLabel("Seus dados foram registrados com exito!");
				content.add(label2, BorderLayout.CENTER);
				content2.add(ok);
				content.add(content2, BorderLayout.SOUTH);
				content.setBorder(BorderFactory.createEtchedBorder(Color.BLACK, Color.BLACK));
				registrou.setContentPane(content);
				look.formatar(registrou, null);
				registrou.setLocationRelativeTo(null);
				registrou.setVisible(true);
			} else {
				JLabel rotulo = new JLabel(
						"<html><center>Ocorreu um erro desconhecido ao registrar seus dados,<br/>Tente novamente</center><html>");
				terminar.addActionListener(this);
				JPanel pterminar = new JPanel(new FlowLayout());
				erro.setLayout(new BorderLayout());
				erro.add(rotulo, BorderLayout.CENTER);
				pterminar.add(terminar);
				erro.add(pterminar, BorderLayout.SOUTH);
				look.formatar(erro, null);
				erro.setLocationRelativeTo(null);
				erro.setVisible(true);
			}
		} catch (SQLException e) {
			e.printStackTrace();
		}
	}

	public void Registrar(UsuarioJuridico usuario, ArrayList<Funcionario> funcionarios) {
		String sql = "INSERT INTO contasjuridicas VALUES(default,?,?,?,?,?,?,?,?,?,?,?,?);";
		PreparedStatement executar = null;
		try {
			executar = conexao.prepareStatement(sql);
			if (usuario.getNomeResp() != null) {
				executar.setString(1, usuario.getNomeResp());
			} else {
				executar.close();
				System.out.println("A operacao falhou por que o nomeresp nao pode seu nulo");
				bexecutar = false;
			}
			if (usuario.getNome() != null) {
				executar.setString(2, usuario.getNome());
			} else {
				executar.close();
				System.out.println("A operacao falhou por que o nome nao pode seu nulo");
				bexecutar = false;
			}
			if (usuario.getSenha() != null) {
				executar.setString(3, CriptografarSenha.criptografar(usuario.getSenha()));
			} else {
				executar.close();
				System.out.println("A operacao falhou por que a senha nao pode seu nula");
				bexecutar = false;
			}
			executar.setString(4, usuario.getNacionalidade());
			if (usuario.getCnpj() != 0) {
				executar.setInt(5, usuario.getCnpj());
			} else {
				executar.setString(5, null);
			}
			if (usuario.getDescricao() != null) {
				executar.setString(6, usuario.getDescricao());
			}
			try {
				if (usuario.getLogo() != null) {
					JDialog processoenviar = new JDialog();
					String nomecompleto = usuario.getLogo().getName();
					String extensao = nomecompleto.substring(nomecompleto.lastIndexOf("."), nomecompleto.length());
					FTP upload = new FTP();
					if (bexecutar) {
						new Thread(new Runnable() {
							public void run() {
								processoenviar.setLayout(new BorderLayout());
								processoenviar.setUndecorated(true);
								processoenviar.setModal(true);
								JLabel ti = new JLabel("Enviando sua imagem:");
								JPanel contentpanelz = new JPanel(new BorderLayout());
								contentpanelz.add(ti, BorderLayout.NORTH);
								progressBar.setPreferredSize(new Dimension(0, 30));
								progressBar.setMinimum(0);
								progressBar.setValue(0);
								progressBar.setStringPainted(true);
								contentpanelz.add(progressBar, BorderLayout.CENTER);
								processoenviar.setContentPane(contentpanelz);
								look.formatar(processoenviar, null);
								processoenviar.setLocationRelativeTo(null);
								processoenviar.setVisible(true);
							}
						}).start();
						upload.upload("localhost", "/TKF/Legal-Accounts/" + usuario.getNome(),
								usuario.getLogo().toString(), "eu", "thallysson", usuario.getNome());
					}
					String caminhoImagem = "/TKF/Legal-Accounts/" + usuario.getNome() + "/perfil" + extensao;
					executar.setString(7, caminhoImagem);
					processoenviar.dispose();
				} else {
					executar.setString(7, null);
				}
			} catch (NullPointerException erro) {
				erro.printStackTrace();
				System.out.println("Ocorreu u null pointer exception");
			}

			if (usuario.getEmail() != null) {
				executar.setString(8, usuario.getEmail());
			} else {
				executar.close();
				System.out.println("A operacao falhou porque o email nao pode ser nulo");
				bexecutar = false;
			}
			executar.setString(9, usuario.getTelefone());
			executar.setDate(10, new java.sql.Date(new Date().getTime()));
			if (usuario.getCodigo() != null) {
				executar.setString(11, usuario.getCodigo());
			} else {
				executar.setString(11, null);
			}
			if (usuario.getPergunta() != null) {
				executar.setString(12, usuario.getPergunta());
			} else {
				executar.setString(12, null);
			}
			if (bexecutar) {
				new Thread(new Runnable() {
					public void run() {
						JPanel content = new JPanel(new BorderLayout());
						registrando.setUndecorated(true);
						JLabel label = new JLabel("Registrando seus dados...");
						content.add(label, BorderLayout.CENTER);
						content.setBorder(BorderFactory.createEtchedBorder(Color.BLACK, Color.BLACK));
						registrando.setContentPane(content);
						look.formatar(registrando, null);
						registrando.setLocationRelativeTo(null);
						registrando.setVisible(true);
					}
				}).start();
				try {
					executar.executeUpdate();
				} catch (Exception erro) {
					erro.printStackTrace();
					erro2 = false;
					registrando.dispose();
				}
			} else {
				erro2 = false;
			}

			executar.close();
			if (erro2) {
				ok.addActionListener(this);
				registrou.setModal(true);
				JPanel content = new JPanel(new BorderLayout());
				JPanel content2 = new JPanel(new FlowLayout());
				registrou.setUndecorated(true);
				JLabel label2 = new JLabel("Seus dados foram registrados com exito!");
				content.add(label2, BorderLayout.CENTER);
				content2.add(ok);
				content.add(content2, BorderLayout.SOUTH);
				content.setBorder(BorderFactory.createEtchedBorder(Color.BLACK, Color.BLACK));
				registrou.setContentPane(content);
				look.formatar(registrou, null);
				registrou.setLocationRelativeTo(null);
				registrou.setVisible(true);
			} else {
				JLabel rotulo = new JLabel(
						"<html><center>Ocorreu um erro desconhecido ao registrar seus dados,<br/>Tente novamente</center><html>");
				terminar.addActionListener(this);
				JPanel pterminar = new JPanel(new FlowLayout());
				erro.setLayout(new BorderLayout());
				erro.add(rotulo, BorderLayout.CENTER);
				pterminar.add(terminar);
				erro.add(pterminar, BorderLayout.SOUTH);
				look.formatar(erro, null);
				erro.setLocationRelativeTo(null);
				erro.setVisible(true);
			}
			if (funcionarios != null) {
				String sql2 = "SELECT LAST_INSERT_ID() INTO @id;";
				PreparedStatement smt = conexao.prepareStatement(sql2);
				ResultSet rs = smt.executeQuery();
				if (rs.next()) {
					int idempresa = rs.getInt(1);
					System.out.println("id = " + idempresa);
					for (Funcionario funcionario : funcionarios) {
						if (funcionario.getNome() != null && funcionario.getSenha() != null) {
							String sql3 = "INSERT INTO funcionarios VALUES(default,@id,?,?,?,?,?,?,?)";
							PreparedStatement inserirfunc = conexao.prepareStatement(sql3);
							String nome = funcionario.getNome();
							nome = nome.substring(0, 1).toUpperCase().concat(nome.substring(1));
							inserirfunc.setString(1, nome);
							inserirfunc.setString(2, CriptografarSenha.criptografar(funcionario.getSenha()));
							SimpleDateFormat df = new SimpleDateFormat("dd/MM/yyyy");
							java.util.Date dataUtil = null;
							try {
								dataUtil = df.parse(funcionario.getNasc());
							} catch (ParseException e) {
								e.printStackTrace();
							}
							inserirfunc.setDate(3, new java.sql.Date(dataUtil.getTime()));
							if (funcionario.getSexo() == "Masculino") {
								inserirfunc.setString(4, "M");
							} else if (funcionario.getSexo() == "Feminino") {
								inserirfunc.setString(4, "F");
							}
							inserirfunc.setString(5, funcionario.getNacionalidade());
							try {
								if (funcionario.getCpf().contains("0") || funcionario.getCpf().contains("1")
										|| funcionario.getCpf().contains("2") || funcionario.getCpf().contains("3")
										|| funcionario.getCpf().contains("4") || funcionario.getCpf().contains("5")
										|| funcionario.getCpf().contains("6") || funcionario.getCpf().contains("7")
										|| funcionario.getCpf().contains("8") || funcionario.getCpf().contains("9")) {

									String cpf = funcionario.getCpf();
									cpf = cpf.replace(".", "");
									cpf = cpf.replace("-", "");
									inserirfunc.setInt(6, Integer.parseInt(cpf));
								} else {
									inserirfunc.setString(6, null);
								}
							} catch (NullPointerException erro) {
								inserirfunc.setString(6, null);
							}
							if (funcionario.getImagem() != null) {
								JDialog processoenviar = new JDialog();
								String nomecompleto = funcionario.getImagem().getName();
								String extensao = nomecompleto.substring(nomecompleto.lastIndexOf("."),
										nomecompleto.length());
								FTP upload = new FTP();
								if (bexecutar) {
									new Thread(new Runnable() {
										public void run() {
											processoenviar.setLayout(new BorderLayout());
											processoenviar.setUndecorated(true);
											processoenviar.setModal(true);
											JLabel ti = new JLabel("Enviando sua imagem:");
											JPanel contentpanelz = new JPanel(new BorderLayout());
											contentpanelz.add(ti, BorderLayout.NORTH);
											progressBar.setPreferredSize(new Dimension(0, 30));
											progressBar.setMinimum(0);
											progressBar.setValue(0);
											progressBar.setStringPainted(true);
											contentpanelz.add(progressBar, BorderLayout.CENTER);
											processoenviar.setContentPane(contentpanelz);
											look.formatar(processoenviar, null);
											processoenviar.setLocationRelativeTo(null);
											processoenviar.setVisible(true);
										}
									}).start();
									upload.upload("localhost",
											"/TKF/Legal-Accounts/" + usuario.getNome() + "/Workers/"
													+ funcionario.getNome(),
											funcionario.getImagem().toString(), "eu", "thallysson", usuario.getNome());
								}
								String caminhoImagem = "/TKF/Legal-Accounts/" + usuario.getNome() + "/Workers/"
										+ funcionario.getNome() + "/perfil" + extensao;
								inserirfunc.setString(7, caminhoImagem);
								processoenviar.dispose();
							} else {
								inserirfunc.setString(7, null);
							}
							if (bexecutar) {
								inserirfunc.executeUpdate();
							}
						}
					}
				}
			}
		} catch (SQLException erro) {
			erro.printStackTrace();
		}
	}

	public boolean verificaRegistroFisico(String valor) {
		JDialog verificando = new JDialog();
		verificando.setUndecorated(true);
		JPanel content = new JPanel(new BorderLayout());
		content.setBorder(BorderFactory.createEtchedBorder(Color.BLACK, Color.BLACK));
		JLabel mensagen = new JLabel("Verificando Registro");
		content.add(mensagen, BorderLayout.CENTER);
		verificando.setContentPane(content);
		look.formatar(verificando, null);
		verificando.setLocationRelativeTo(null);
		verificando.setVisible(true);
		String sql = "select * from contasfisicas where nomedeusuario = '" + valor + "';";
		PreparedStatement stm = null;
		boolean retorno = false;
		try {
			stm = conexao.prepareStatement(sql);
		} catch (SQLException e) {
			e.printStackTrace();
		}
		ResultSet resultado = null;
		try {
			resultado = stm.executeQuery();
		} catch (SQLException e) {
			e.printStackTrace();
		}
		try {
			if (resultado.next()) {
				retorno = true;
			} else {
				retorno = false;
			}
		} catch (SQLException e) {
			e.printStackTrace();
		}
		verificando.dispose();
		return retorno;
	}

	public void actionPerformed(ActionEvent evento) {
		if (evento.getSource() == terminar) {
			erro.dispose();
		}
		if (evento.getSource() == ok) {
			registrou.dispose();
			registrando.dispose();
		}
	}

	public boolean verificaRegistroJuridico(String valor) {
		JDialog verificando = new JDialog();
		verificando.setUndecorated(true);
		JPanel content = new JPanel(new BorderLayout());
		content.setBorder(BorderFactory.createEtchedBorder(Color.BLACK, Color.BLACK));
		JLabel mensagen = new JLabel("Verificando Registro");
		content.add(mensagen, BorderLayout.CENTER);
		verificando.setContentPane(content);
		look.formatar(verificando, null);
		verificando.setLocationRelativeTo(null);
		verificando.setVisible(true);
		String sql = "select * from contasjuridicas where nomedaempresa = '" + valor + "';";
		PreparedStatement stm = null;
		boolean retorno = false;
		try {
			stm = conexao.prepareStatement(sql);
		} catch (SQLException e) {
			e.printStackTrace();
		}
		ResultSet resultado = null;
		try {
			resultado = stm.executeQuery();
		} catch (SQLException e) {
			e.printStackTrace();
		}
		try {
			if (resultado.next()) {
				retorno = true;
			} else {
				retorno = false;
			}
		} catch (SQLException e) {
			e.printStackTrace();
		}
		verificando.dispose();
		return retorno;
	}
}

Classe da criptografia:

package objetos;

import java.io.UnsupportedEncodingException;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;

public class CriptografarSenha {
	public static String criptografar(String senha) {
		StringBuilder hexString = new StringBuilder();
        String salt = "x--;=-=0245007bx///;-l;0x0900--xy76-=[[]"; 
        MessageDigest algorithm = null;
        byte messageDigest[] = null;
        try {
        	senha += salt;
            algorithm = MessageDigest.getInstance("SHA-256");
            messageDigest = algorithm.digest(senha.getBytes("UTF-8"));
            for (byte b : messageDigest) {
                hexString.append(String.format("%02X", 0xFF & b));
            }
        } catch (NoSuchAlgorithmException e) {
            e.printStackTrace();
            
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        }
        return hexString.toString();
	}
}

Isso. Na classe de teste, podemos observar que ele sempre gera o mesmo hash quando a senha
é a mesma. Armazene na base quando o usuaŕio registrar a senha, depois gere o hash quando ele for logar e compare com o que estiver no SGDB.

É isso que eu estou fazendo, digitei a mesma senha e o hash foi diferente com esse código, só uma pergunta, o que é SGBD?

SGBD = Sistema Gerenciador de Banco de Dados (Oracle, PostgreSQL, MySQL, SQL Server, Firebird, MariaDB e etc…).

Você testou com a classe de teste que criei?
Preciso ver o seu código completo.

Você leu as classes inteiras? Porque não sei se percebeu mas tem uma parte do código da classe ObjetoLogin onde eu comparo a senha digitada criptografada com a senha que está no banco, é exatamente o que você fez no exemplo só que de uma maneira diferente.

Tem um problema aqui.
Você esta pegando a senha com getString(18), porém esta comparando com getString(6).

if (resultado.getString(6).equals(CriptografarSenha.criptografar(senha))) {
                    loginfisico.setNomeDeUsuario(resultado.getString(2));
                    loginfisico.setNome(resultado.getString(3));
                    loginfisico.setSobrenome(resultado.getString(4));
                    loginfisico.setEmail(resultado.getString(5));
                    loginfisico.setSenha(resultado.getString(18));
                    loginfisico.setNasc(resultado.getDate(7));
                    loginfisico.setTelefone(resultado.getString(8));
                    String sexo = resultado.getString(9);
                    if (sexo == "M") {

É não sei o que deu em mim para fazer isso, o campo senha é o 6 e minha tabela tem 17 colunas, mas corrigindo isso as senhas continuam sendo diferentes.

Coloquei um System.out para verificar o que esta vindo:

if (resultado.getString(6).equals(CriptografarSenha.criptografar(senha))) {
                    
    System.out.println(resultado.getString(6)); // vem do banco
    
    System.out.println(CriptografarSenha.criptografar(senha)); // vem da tela 
     
    loginfisico.setNomeDeUsuario(resultado.getString(2));
    loginfisico.setNome(resultado.getString(3));
    loginfisico.setSobrenome(resultado.getString(4));
    loginfisico.setEmail(resultado.getString(5));
    loginfisico.setSenha(resultado.getString(6));
    loginfisico.setNasc(resultado.getDate(7));
    loginfisico.setTelefone(resultado.getString(8));
    String sexo = resultado.getString(9);

O resultado é o seguinte:

Primeira senha:

CC6A57F48CC1D95FEF3C93E27B687FF92B681C5BB2C8A3A1727E4A32642CB32A

Segunda senha:

E721C993048E7987C1F961403AB50F4A346AB697F3F3D75FB56AF7F5072CF72E
1 curtida

Qual valor esta vindo da tela? O que o usuário digitou antes de criptografar?

1 curtida

Não, depois de criptografar

Não sei se desistiram do tópico, mas só para avisar, eu ainda não consegui resolver o problema.

Conseguiu resolver?

Utiliza Md5heX do DigestUtils, bem mais fácil, e não terá problemas

Doc
https://commons.apache.org/proper/commons-codec/apidocs/org/apache/commons/codec/digest/DigestUtils.html