문제

I have a java 웹 응용 프로그램을 사용하여 봄 프레임워크 및 봄 보안에 대한 그것의 로그인합니다.에서 내 데이터베이스 내가 암호를 암호화하는 MD5 되기 전에 저장됩니다.가 application-config.xml 이 코드

 <security:authentication-provider>
<security:password-encoder hash="md5"/>
<security:jdbc-user-service
        data-source-ref="dataSource"
        users-by-username-query="select user_name username, user_password password, 1 enabled from users where user_name=?"
        authorities-by-username-query="select username, authority from authorities where username=?" />
</security:authentication-provider>

처음에 이 일 때 비밀번호에 db 었 암호화되지 않습니다.하지만 내가 암호화되고 추가되는 이 조각을 내 응용 프로그램에서 config

      <security:password-encoder hash="md5"/>

나를 얻을 수 있습니다.

도움이 되었습니까?

해결책

는 방법 당신은 당신을 만드는 MD5?다음과 같이에서 잘 작동합 Java:

MessageDigest messageDigest = MessageDigest.getInstance("MD5");  
messageDigest.update(user.getPassword().getBytes(),0, user.getPassword().length());  
String hashedPass = new BigInteger(1,messageDigest.digest()).toString(16);  
if (hashedPass.length() < 32) {
   hashedPass = "0" + hashedPass; 
}

을 인코딩할 때"코알라"당신이 얻을 수"a564de63c2d0da68cf47586ee05984d7"?

다른 팁

내가 이것을 깨닫는 조금 늦게,그러나 봄이 내장되는 클래스를 만들이 많이 더 쉽습니다.

@Test
public void testSpringEncoder() {
    PasswordEncoder encoder = new Md5PasswordEncoder();
    String hashedPass = encoder.encodePassword("koala", null);

    assertEquals("a564de63c2d0da68cf47586ee05984d7", hashedPass);
}

이것은 단위 테스트는 내가 쓴에 내장하여 봄의 보안 코드,그것은 많은 보다 작은 MessageDigest 코드는 이후 사용하여 봄 Security 이미가 있어야 합니다 클래스에서 당신의 클래스 경로가 이미.

당신은 읽 6.3.3 해싱 및 인증 섹션에서 봄 보안 참조 매뉴얼은 무엇입니까?그것을 언급 몇 가지 문제가 발생할 수 있에서 사용하여 암호 해시.

일부의 가능성 나열:

  • 데이터베이스 암호 해시에 있을 수도 있습 Base64 하는 동안,그 결과에서 MD5PasswordEncoder 에서 진수 문자열
  • 비밀번호 해시될 수 있습에서 사용하는 동안,그 결과에서 인코더에서는 낮은 경우 문자열
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top