암호 해시 함수 Bcrypt 의 최대 암호 길이 제한 상세 설명

암호 해시 함수 Bcrypt 의 최대 암호 길이 제한
Brypt 는 매우 유행 하 는 암호 해시 알고리즘 으로 Niels Provos 와 DavidMazi è res 가 Blowfish 암호 화 알고리즘 을 기반 으로 디자인 한 암호 해시 알고리즘 으로 1999 년 USENIX 협회 에 제출 되 었 다.Bcrypt 는 디자인 에 소금 Salt 를 포함 하여 무지개 표 공격 을 방어 하고 자가 적응 기능 도 제공 합 니 다.시간 이 지 날수 록 반복 수 를 증가 시 켜 집행 을 더욱 느리게 할 수 있 습 니 다.계산 능력 을 증가 하 더 라 도 Bcrypt 는 폭력 공격 에 저항 할 수 있 습 니 다.
Bcrypt 는 OpenBSD 와 SUSE Linux 등 운영 체제 의 기본 암호 해시 알고리즘 이다.그러나 Bcrypt 알고리즘 을 사용 할 때 최대 암호 길이 제한 이 있 습 니 다.보통 50~72 문자 이 고 정확 한 길이 제한 은 구체 적 인 Bcrypt 실현 에 달 려 있 습 니 다.최대 길이 가 넘 는 암 호 는 절 단 됩 니 다.
다음은 spring Security 의 BCryptPasswordEncoder 를 예 로 들 면:

BCryptPasswordEncoder passwordEncoder = new BCryptPasswordEncoder();
// 72   
String password1 = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa";
// 73   
String password2 = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaab";
String encodedPassword1 = passwordEncoder.encode(password1);
boolean matches = passwordEncoder.matches(password2, encodedPassword1);
System.out.println("encodedPassword1: " + encodedPassword1);
System.out.println("matches: " + matches);
프로그램 을 실행 할 때 다음 결 과 를 출력 합 니 다.

encodedPassword1: $2a$10$A5OpVKgjEZzmy6UNsqzkjuG2xGET1wp3b/9ET5dz/tHQ3eRvyXSSO
matches: true
이 는 Password 문자열 이 72 자 를 넘 는 부분 이 절단 되 어 버 려 졌 음 을 증명 합 니 다.
Bcrypt 암호 화 알고리즘 72 문자 길이 제한 문 제 를 해결 하려 면 다음 과 같이 할 수 있 습 니 다.
먼저 SHA-256 알고리즘 을 사용 하여 문자열 을 암호 화한 다음 에 Bcrypt 알고리즘 을 사용 하여 암호 화하 고 위조 코드 로 다음 과 같이 표시 합 니 다.

hashpw(sha256('password'), salt);
읽 어 주 셔 서 감사합니다. 여러분 에 게 도움 이 되 기 를 바 랍 니 다.본 사이트 에 대한 여러분 의 지지 에 감 사 드 립 니 다!

좋은 웹페이지 즐겨찾기