2011-03-31 8 views
3

와 염석 암호 기본 해시 구현은 다음과 시로 : 먼저 소금을두고 어떻게해싱 및 아파치에서 시로

MessageDigest digest = getDigest(getAlgorithmName()); 
     if (salt != null) { 
      digest.reset(); 
      digest.update(salt); 
     } 
     byte[] hashed = digest.digest(bytes); 
     int iterations = hashIterations - 1; //already hashed once above 
     //iterate remaining number: 
     for (int i = 0; i < iterations; i++) { 
      digest.reset(); 
      hashed = digest.digest(hashed); 
     } 
     return hashed; 

알 수 있습니다. 해시가 암호 + 소금이고 소금 + 암호가 아닌 기존 시스템에 대해 인증해야합니다.

현재이 메소드 외부에서 연결을 수행 중이며 소금을 null로 전달하고 있습니다. 서브 클래 싱과 오버라이드를 제외하고는이 방법이 내가해야하는 것보다 나은 방법일까요?

답변

2

하위 클래스가 SimpleHash로 바뀌었고 하나의 메서드를 재정 의하여 트릭을 만들었습니다. 그냥 다이제스트를 재설정하고 pw 다음에 소금을 넣은 다음 소화하면 제대로 작동합니다.