В общем появилась у меня проблема с расшифровкой пароля. Есть два метода:
метод который шифрует пароль
private byte[] encrypt(String password) throws NoSuchAlgorithmException, NoSuchPaddingException, InvalidKeyException, IllegalBlockSizeException, BadPaddingException {
Cipher cipher = Cipher.getInstance("AES");
SecretKeySpec secretKey = new SecretKeySpec("dfgkirvbn25685la".getBytes(), "AES");
cipher.init(Cipher.ENCRYPT_MODE, secretKey);
return cipher.doFinal(password.getBytes());
}
и метод который расшифровывает пароль
private String decrypt(PersonEntity pe) throws NoSuchAlgorithmException, NoSuchPaddingException, InvalidKeyException, IllegalBlockSizeException, BadPaddingException {
Cipher cipher = Cipher.getInstance("AES");
SecretKeySpec secretKey = new SecretKeySpec("dfgkirvbn25685la".getBytes(), "AES");
cipher.init(Cipher.DECRYPT_MODE, secretKey);
String s = "";
byte[] bites = cipher.doFinal(pe.getPassword());
for (byte b : bites) {
s += (char) b;
}
return s;
}
Так вот, когда я ввожу пароль в окошке логина, метод заканчивает свою работу на строке byte[] bites = cipher.doFinal(pe.getPassword());
и дальше ничего почему-то не происходит. Пароль я получаю из сущности, в которой у меня хранится столбец из байтов
private byte[] password;
Вот так хранится пароль в бд
Может я как-то не правильно храню эти пароли или расшифровку не правильно делаю?
Замените:
byte[] bites = cipher.doFinal(pe.getPassword());
for (byte b : bites) {
s += (char) b;
}
return s;
на
return new String(cipher.doFinal(pe.getPassword()));
Сборка персонального компьютера от Artline: умный выбор для современных пользователей