2017-02-03 10 views
1

Linux의 두 응용 프로그램에 대한 해시 암호로 Apache 라이브러리를 사용했습니다. 그 중 하나는 Pure-Ftp이고 다른 하나는 제 신청서입니다. 수동으로 Pure-Ftp passwd 파일에 해시 된 암호를 저장하면 정상적으로 작동하며 사용자는 주어진 사용자/암호로 Ftp를 사용할 수 있습니다.
내 응용 프로그램에서 사용자를 인증하려고하지만 checkPassword (clearTextPassword, hashedPassword) 함수가 없습니다. 암호를 확인하려면Java에서 SHA1을 사용하여 사용자를 인증하는 방법

import org.apache.commons.codec.digest.Crypt; 
... 
... 
... 
String hashedValue = Crypt.crypt(clearTextPassword); 
.. 
+0

음, 해당 코드를 작성해야합니다. 해시 된 암호는 어디에 저장하고 있습니까? 당신이 여기서 무엇을 요구하는지는 분명치 않습니다. (그것은 당신의 암호와 FTP 사이에 어떤 관계가 있는지 분명하지 않다.) 또한 나는 개인적으로 SHA-1을 심각한 일에 대한 암호 해시로 사용하는 것을 피할 것이다. –

+0

해시 함수를 사용하는 것만으로는 충분하지 않으며 단지 소금을 추가하면 보안을 향상시키는 데별로 도움이되지 않습니다. 대신 HMAC를 무작위로 약 100ms 동안 반복하고 해시로 소금을 저장하십시오. 'PBKDF2' (일컬어'Rfc2898DeriveBytes'),'password_hash' /'password_verify','Bcrypt' 및 유사한 기능을 사용하십시오. 요점은 공격자가 무차별 적으로 암호를 찾는 데 많은 시간을 소비하게하는 것입니다. 사용자를 보호하는 것이 중요하므로 안전한 비밀번호 방법을 사용하십시오. – zaph

+0

SHA1 512가 안전하다고 생각 했나요? 나는 bash 함수를 사용하고 싶지 않다. Java에서 해시 된 암호를 한 번 생성 한 다음 데이터베이스 및 Pure-Ftp의 passwd 파일에 저장하려고합니다. – Razavi

답변

0

는, 당신은 소금으로 savedHashedPassword와 간단한 암호를 부여 해시 수 있습니다

private static boolean checkPassword(String password, String hashedPassword) { 
     String tmpHashedPassword = Crypt.crypt(password, hashedPassword); 
     return hashedPassword.equalsIgnoreCase(tmpHashedPassword); 

}

Crypt.crypt (암호) 강력한 토굴을 사용해 다이제스트를 계산 (3) 연산. 무작위 소금과 기본 알고리즘 (현재 SHA-512)이 사용됩니다.