이것은 데스크톱 응용 프로그램 용이므로 기본 로그인 보안 만 원하지만 암호를 암호화하는 데 하나의 기능을 사용하고 암호를 전달하고 UI에서 패스워드를 전달하고 db에 해시를 저장하고 사실을 반환합니다. false는 일치하는지 여부에 따라 다릅니다.Jasypt를 사용하여 암호를 암호화하고 암호 해독
공식 jasypt 웹 사이트에서 풀링 된 버전을 사용하려고합니다. 암호화 할 수는 있지만 암호 해독 방법을 모르겠습니다.
//Function to encrypt password
public static String cifrarClave(String clave) {
PooledStringDigester digester = new PooledStringDigester();
digester.setPoolSize(4);
digester.setAlgorithm("SHA-1");
digester.setIterations(50000);
digester.setSaltSizeBytes(32);
//String return is hash that I save into db
return digester.digest(clave);
}
//Function to decrypt password
//clave is old plain that user enter from UI and I want to compare from hash save it into db
public static boolean validarClave(String clave, String hash) {
PooledStringDigester digester = new PooledStringDigester();
digester.setPoolSize(4);
digester.setAlgorithm("SHA-1");
digester.setIterations(50000);
String digest = digester.digest(clave);
//Always fails at that point, I get different hash from compare clave
return digester.matches(digest, hash);
}
저는 보안에 대한 지식이별로 없기 때문에 다른 제안이나 대안을 받아들입니다.
행운을 빌어 요! –
감사합니다 jaja, 나는 소금이 각 tiem을 변경하기 때문에 실패한 것 같아요. 예를 들어 사용자 이름의 처음 두 글자에 소금을 사용하고 싶습니다. 그래서 항상 소금을 알 수 있고 따로 저장할 필요가 없습니다. 문제는 여기서 인코딩하는 방법을 모르겠다는 것입니다.이 기사 (http://www.jasypt.org/howtoencryptuserpasswords.html)를 읽었지 만 코드에서 예제를 제공하지 않습니다. – Marcos
** 암호를 해독하기 위해 ** 필요하지 않습니다. 사용자가 입력 한 내용을 해시하고 데이터베이스의 암호로 해시를 확인하십시오. –