2025. 6. 29. 23:28ㆍ카테고리 없음
최근 회사에서 TTA 관련 인증을 진행했다. 그 과정에서 모델 버전 관리를 위해 모델의 해시 값을 알려 달라는 TTA 담당자의 문의가 있었다. 거기서 나는 '오잉?' 했다. 해시 값이 뭐지? 그래서 나름 알아봤다.
해시 값이란?
간단하게 데이터나 파일의 지문(Fingerprint)이라고 생각하면 된다. 데이터를 고정된 길이의 고유한 값으로 변경해 변환한 결과물이다. 파일의 매우 작은 변화만 생겨도 해시 값에는 변화가 생기며, 해시 값을 데이터로 바꾸는 역산도 불가능한 단반향다. 변환 과정에서 사용하는 알고리즘은 MD5, SHA-256, SHA-1 등 암호 알고리즘과 연관이 있다. 특정 데이터에서 특정 해시값이 나오도록 하는 것은 불가능 하지만 깊이 들어가면 해킹 등의 공격으로 가능하다고도 한다.
데이터로 해시 값 알아보기
실제로 문자열 데이터에서 해시 값을 살펴 보겠다. 코드는 너무나 쉽다. hashlib 라이브러리를 사용하면 되는데 이게 기본 패키지 인지는 모르겠다. 코랩에서는 기본이다.
이렇듯 같은 값에 대해서는 같은 해시 값을 갖고 있는 것을 볼 수 있다. 하지만 이번에는 신기한걸 해보겠다.
분명 위에서는 문자열 'Hello' 두 개가 같은 해시 값이었는데 밑은 왜 다를까? 바로 text2에 제로폭 특수문자(U+200C)가 들어가 있다. 눈에는 보이지는 않지만 다른 문자가 들어가있는 것이다. 최근 이런 문자열 트릭이 Chat GPT 결과에 들어가 있다는 얘기가 있다. 그래서 복붙해서 과제를 내면 무조건 걸린다라는 얘기가 있던데 진짜인지는 모르겠다.
파일 해시 값 보기
위 코드와 같이 파일의 해시 값도 볼 수 있다. 너무 쉬워서 별로 할 말이 없다.
해시 값 활용
이렇듯 간단하고 확실한 알고리즘으로 많은 곳에 활용할 수 있다.
- 버전 관리 : 파일, 데이터셋, 코드가 변경되었는지 확인할 때 활용.
- 무결성 검증 : 다운로드 한 파일이 배포 파일과 같은지, 손상된 곳은 없는지 활용.
- 중복 방지 : 동일한 내용의 파일이 있는지 활용.
- 키 : 입력 데이터의 해시 값을 키로 사용해 결론 도출 속도 향상에 활용.
- 암호화
이걸로 나는 파일 정리나 해야겠다. 작업 디렉토리에 많은 곳에 중복 데이터들이 있다. os.walk 라이브러리와 함께 사용해서 동일한 파일을 걸러내 삭제를 해야겠다.