2015-04-02 3 views
0

Я храню зашифрованный пароль пользователя в базе данных.как расшифровать сиро пароль, хранящийся в базе данных ..?

код:

String username = "admin"; 
String encrypted_password = createPassword("admin$321"); 
// $shiro1$SHA-256$500000$mAXboFyyOtBVoGi6AD8LXw==$acHoVyuQyOSOKfjqwAHXyEVTH7p9cH79yI+0O15NS0U= 
System.out.println(getOriginalPassword(encrypted_password)); 

private static String createPassword(String password) { 
DefaultPasswordService passwordService = new DefaultPasswordService(); 
DefaultHashService hashService = new DefaultHashService(); 
hashService.setHashIterations(passwordService.DEFAULT_HASH_ITERATIONS); 
hashService.setHashAlgorithmName(passwordService.DEFAULT_HASH_ALGORITHM); 
hashService.setGeneratePublicSalt(true); 

passwordService.setHashService(hashService); 
String encryptedPassword = passwordService.encryptPassword(password); 
System.out.println(encryptedPassword); 
return encryptedPassword; 
} 

private static String getOriginalPassword(String encrypted_password) { 
    return null; 
} 

как расшифровать сохраненный пароль ..?

+1

Итак, чтобы быть понятным, вы спрашиваете, как расшифровать пароль, который был зашифрован собой? Разве вы не должны знать обе стороны алгоритма перед его использованием? – GhostCat

+2

В отличие от ответа Тортона, проверка пароля всегда выполняется в грамотно разработанных защищенных системах, которые не уязвимы для юридических действий без отказов, - это * хэш * пароль с безопасным алгоритмом хеширования и сравнивать * хэшей. * Для такой системы совершенно невозможно, чтобы восстановить пароль открытого текста. Если вы разрабатываете систему, которая, как предполагается, способна это сделать, вы делаете это неправильно, а не только технически, но юридически, способами, которые могут нарушить вашу компанию. Примите компетентные советы, прежде чем продолжить. – EJP

+0

@EJP Разве это не то, что я сказал? – Torben

ответ

-1

Как обычно делается проверка пароля, вы шифруете пароль, предоставленный пользователем, и сравниваете результат с зашифрованным паролем, который хранится в базе данных.

Если вам нужно расшифровать пароли, то вы сделали что-то не так, и это поможет нам лучше ответить, если мы узнаем, почему вам нужно их расшифровать.

Если вы можете расшифровать сохраненные пароли, то в первую очередь их шифрование не так много, потому что точка шифрования заключается в том, чтобы защитить пароли от посторонних глаз. Если вы можете их расшифровать, шифрование - это неприятность, а не функция безопасности.

+0

Я создаю панель пользователя, где администратор/менеджер будет редактировать информацию о пользователе, а также сменить пароль пользователя. Я не храню пароль в открытом тексте в базе данных ..... –

+1

Тогда вам не нужно расшифровывать старый пароль. Просто зашифруйте новый пароль и сохраните его. – Torben

Смежные вопросы