ACEGI 암호 화

2235 단어 xmlSecurityAcegi
오늘 또 acegi 를 보 았 습 니 다. 공 부 는 이 렇 습 니 다. 계속 반복 되 네요.
한 번 또 한 번 의 수확.
오늘 문제 해결: 비밀번호 암호 화!
설명: 사용자 가 등록 할 때 데이터베이스 에 삽 입 된 비밀 번 호 는 암호 화 됩 니 다.이 암호 화 함 수 는 어떻게 씁 니까?
해결 방법:
다 들 아시 다시 피 ACEIG 인증: dao AuthenticationProvider
Authentication. getCredentials () 와 UserDetails. getPassword 판단
getCredentials 로그 인 인터페이스의 입력 암 호 를 가 져 옵 니 다.
getPassword 데이터베이스 에 있 는 암 호 를 가 져 옵 니 다.
인증 할 때 XML 설정 이 되 어 있 습 니 다.

<property name="passwordEncoder">
<bean class="org.acegisecurity.providers.encoding.MD5PasswordEncoder">
</property>
<property name="saltSource">
<bean class="org.acegisecurity.providers.dao.salt.SystemWideSaltSource">
<property name="systemWideSalt" value="aaa">
</property>

이것 은 단지 네가 입력 한 비밀 번 호 를 암호 화 하 는 것 이다.
그러나 등록 할 때 이 암호 화 과정 과 암호 화의 실현 을 먼저 알 아야 한다.그렇지 않 으 면, 두 개의 비밀번호 도 같 지 않다.
이것 은 acegi 의 소스 코드 를 보면 실현 할 수 있 는 방법 입 니 다.
사실 acegi 의 실현 도 javax. security. Message Digest 를 통 해 이 루어 졌 다.
우선 어떤 암호 화 방식 인지 확인 하 세 요.
MD5, SHA 등.
MessageDigest m = MessageDigest.getInstance("MD5");
이어서 어떤 인 코딩 함수 로 암호 요약 인 코딩 을 하 는 지 판단 했다.
Hex,Base64
XML 에 설정 되 어 있 지 않 으 면 기본적으로 HEX 를 사용 합 니 다.
Hex.encode(m.digest(rewPass.getBytes()));
어, 암호 화 염 을 사용 하지 않 았 어? 방금 잊 어 버 렸 어. PasswordEncoder 의 encodePassword (String raw Pass, Object salt) 에서 얻 은 salt 가 XML 에서 systemWide Salt 의 값 이 야.
암호 화 염 은 사실 암호 화 된 피 드 로 원본 암호 와 함께 암호 화 된 연산 입 니 다.
위의 Hex. encode (m. digest (rew Pass. getBytes ()) 는 이렇게 써 야 합 니 다.
Hex.encode(m.digest((rewPass+salt).getBytes()))
이제 다 알았어.
암호 화 방법 도 나 왔 습 니 다.

	public static String toMD5(String rawPass ){
		rawPass +="{eastjava1995}";//{eastjava1995} is salt,mapping the xml file
		String encPass = null;
		try{
			 MessageDigest md5=MessageDigest.getInstance("MD5");
			 encPass = new String(Hex.encodeHex(md5.digest(rawPass.getBytes())));
		}catch(Exception e){
			e.printStackTrace();
		}
		return encPass;
	}

좋은 웹페이지 즐겨찾기