2017-10-09 4 views
0

사용자 계정이있는 그룹 프로젝트에서 작업하고 있습니다. 지금은 암호를 암호화, 저장 및 확인하는 방법을 알아 내려고하고 있습니다. 우리는 이미 암호 저장을 구현했으나 암호를 아직 저장하지 않았다가 저장했습니다. Java 라이브러리 Jasypt를 사용하고 있습니다. 특히 StandardStringDigester 클래스를 사용하고 있습니다.자바 라이브러리 jasypt 다이제스트로 비밀번호 암호화

내 문제는 동일한 문자열을 소화 할 때마다 다르게 나오는 것입니다. 문자열이 다이제스트 문자열과 일치하는지 정확하게 확인하기 위해 찾을 수있는 유일한 방법은 Digesters Match 메서드를 사용하는 것입니다. 이 방법에는 암호화되지 않은 암호 문자열과 소화 된 암호의 두 인수가 필요합니다. 그러나 내가 알고있는 한, 클라이언트 측에서 유효성 검사가 수행되어서는 안되며, 서버 측에서는 소화되지 않은 암호를 결코 보지 말아야합니다. 그렇다면 어떻게 암호를 소화하고 서버로 보낸 다음 저장된 암호 (소화 된 암호)와 일치하는지 확인하십시오.

답변

0

암호를 안전하게 저장하려면 어떻게 그리고 왜 당신이 포럼을 조금 방문 할 수 있는지 이해해야합니다.이 주제에 대한 많은 자료가 있습니다.

이것은보다 포괄적 인 중 하나입니다 https://crackstation.net/hashing-security.htm

내 문제는 내가 같은 문자열을 소화마다 다르게 나오는 것입니다.

지금까지 StandardStringDigester가 소금을 사용하여 입력을 해싱한다는 것을 알고 있습니다. 그것은 매번 무작위로 나온 다이제스트를 의미합니다. 그것은 그것이 있어야하는 방법입니다. 내가 암호를 소화 서버로 전송 어떻게 그래서

가 서버에 암호 일반 텍스트를 보낼 수는 TLS (HTTPS)주의를 기울여야한다 무결성과 confidentality

경우

그런 다음 해당 사용자의 저장된 (소화 된) 비밀번호와 일치하는지 확인하십시오.

난 당신이 일치하는 방법을 찾고있는 생각 : 이 matches(String message, String digest) Jasyp은, 소금을 새로운이 같은 소금 다이제스트를 작성해야합니다. 내가 틀렸다면 수정/의견을주세요.

+0

고맙습니다. 제 문제는 서버에 일반 텍스트를 보내는 것이 좋지 않다고 생각한 것입니다. 분명히 말하고 싶습니다. 평문은 사용자가 올바르게 입력 한대로 암호화되지 않은 것을 의미합니까? – Alex5775

+0

@ Alex5775 참으로. 클라이언트에서 해시를하면 해시/다이제스트가 비밀번호가됩니다. 그렇기 때문에 https가 필요합니다. – gusto2

+0

다시 한 번 고맙습니다. 한 가지 더 질문합니다. 자바를 사용하고 있는데, Java (구체적으로 소켓)에 TLS가 자동으로 구현되어 있습니까? 아니면 다른 라이브러리 이것을 구현하려면? – Alex5775