이 형식의 차이점은 무엇입니까?
Hash found: admin:$1$$oLN1UCc1Y3T30QkMcKMSx0
및 다음 :
5f4dcc3b5aa765d61d8327deb882cf99
또한
첫 번째 해시 형식을 두 번째 형식으로 바꾸는 방법은 무엇입니까?
감사합니다. Advance.
댓글
답변
첫 번째 예는 그림자 파일 형식과 같습니다. 위치 : ID (admin
) 알고리즘 (1
= MD5) Salt (없음) 해시 (oLN1UCc1Y3T30QkMcKMSx0
), Base64 형식으로 보이는 해시를 사용합니다.
두 번째 (5f4dcc3b5aa765d61d8327deb882cf99
)는 MD5 해시와 일치하는 128 비트 16 진수 문자열로 보입니다. 음.
하지만 둘 다 바이너리 &로 변환 한 다음 반대 형식으로 다시 변환하면 두 해시가 일치하지 않습니다.
-
16 진수 문자열 (
5f4dcc3b5aa765d61d8327deb882cf99
)로 표시되는 이진 값의 Base64는X03MO1qnZdYdgyfeuILPmQ
입니다. -
반대로 base64 해시의 16 진수 문자열 (
oLN1UCc1Y3T30QkMcKMSx0
)은a0b3755027356374f7d1090c70a312c7
입니다.------- Edit -----
user1686 은 다음과 같이 지적했습니다. oLN1UCc1Y3T30QkMcKMSx0 은 MD5crypt로, 각 라운드마다 추가 항목이있는 MD5 천 라운드입니다. 이 두 해시가 실제로 동일한 비밀번호에서 나온 경우, 직선 MD5 해시를 동등한 해시로 변환 할 수 있습니다. MD5Crypt의 첫 번째 MD5 계산을 우회하고 암호 대신 해시를 제공하여 소금이없는 MD5Crypt를 사용합니다.
Answer
마지막 $ 뒤의 부분은 base64로 인코딩되며, 이는 바이너리 데이터를 일반적이고 인쇄 가능한 문자 (ASCII 제어 코드 또는 높은 비트가 필요한 문자가 아님)로 표현하는 합리적으로 압축 된 방식입니다 (4 개의 문자가 3 바이트가 됨). 두 번째 해시는 단순히 16 진수로 인코딩되어 효율성이 떨어지지 만 (4 개의 문자가 2 바이트가 됨) 특히 프로그래머 (항상 16 진수를 사용하는)에게 더 읽기 쉽습니다.
편집 : 추가로 첫 번째 해시는 16 진수로 인코딩됩니다. 알고리즘은 거의 확실하게 md5 crypt 이며, 몇 가지 추가 작업이 수행 된 반복 MD5입니다. 따라서 주어진 입력에 대해 기본 MD5와 동일한 출력을 생성하지 않습니다. 그리고 실제로는 그렇지 않습니다. 마지막 $ 이후 부분을 16 진수로 변환하면 a0b3755027356374f7d1090c70a312c7이 나옵니다. 최소한 부분적으로는) md5crypt가 일반 base64와 다른 순서로 동일한 문자를 갖는 사용자 지정 base64를 사용한다고 생각하기 때문입니다.
첫 번째 해시는 / etc / shadow 암호 형식의 예입니다. $1
는 MD5crypt를 의미하고 다음 두 $ 문자 사이에 아무것도없는 것은 무염임을 의미합니다. 두 번째에 대한 정보는 없습니다. 솔트되거나 다른 암호, 다른 해시 알고리즘 또는 둘 다일 수 있습니다. 하지만 md5crypt보다 베어 MD5 일 가능성이 높습니다.
MD5와 md5crypt의 차이점을 반영하도록 편집
댓글
- ' 무염이더라도 $ 1 $는 여전히 베어 MD5가 아닙니다-it ' s md5crypt 는 다른 조미료가 추가 된 1000 라운드의 MD5를 포함합니다.
- 두 번째 해시는 md5 (' 비밀번호 ').
echo -n 'password' | md5sum
는5f4dcc3b5aa765d61d8327deb882cf99
li를 생성합니다. >
Hash found: admin:$1$$oLN1UCc1Y3T30QkMcKMSx0
. 여기서도 유사한 사례를 찾았습니다. link