왜 중요할까요?
해시는 글자나 파일에서 뽑은 "디지털 지문"이에요. 내용이 점 하나만 바뀌어도 지문이 완전히 달라져요. 그래서 파일이 중간에 바뀌거나 망가지지 않았는지 확인할 때 써요.
프로그램을 내려받는 사이트에 "SHA-256" 값이 적혀 있다면, 내려받은 파일의 해시를 만들어 비교해 보세요. 같으면 원본 그대로이고, 다르면 쓰지 않는 게 좋아요.
이렇게 지켜요
- 파일을 비교할 때는 SHA-256 이상을 써요. SHA-1은 옛날 방식이라 보안용으로는 쓰지 않아요.
- 비교할 해시값은 파일을 받은 곳과 다른 믿을 만한 곳(공식 홈페이지)에서 가져와요.
- 해시는 암호화가 아니에요. 해시값만으로는 원래 내용을 되돌릴 수 없지만, "1234" 같은 짧은 글자는 미리 만들어 둔 목록으로 알아낼 수 있어요.
이 도구는 이렇게 동작해요
브라우저에 들어 있는 WebCrypto(crypto.subtle.digest)로 계산해요. 글자는 UTF-8 바이트로 바꾼 뒤 계산하기 때문에 한글·이모지도 다른 프로그램과 같은 값이 나와요. 파일은 이 기기 안에서 읽기만 하고 업로드하지 않아요. 아주 큰 파일은 메모리를 많이 써서 512MB까지만 받아요.
자주 묻는 질문
파일이 서버로 올라가나요?
아니요. 파일은 이 브라우저 안에서만 읽고 계산해요. 인터넷이 끊겨 있어도 계산할 수 있어요.
같은 글자인데 다른 사이트와 값이 달라요.
보이지 않는 빈칸이나 줄 바꿈이 들어갔는지 확인해 보세요. 끝에 줄 바꿈 하나만 있어도 값이 완전히 달라져요. 이 도구는 글자를 UTF-8로 계산해요.
해시로 비밀번호를 저장해도 되나요?
그냥 SHA-256만으로는 부족해요. 사이트를 만든다면 비밀번호 전용 방식(bcrypt, scrypt, Argon2 등)을 써야 해요.
해시값이 같으면 정말 같은 파일인가요?
SHA-256처럼 튼튼한 방식에서 값이 같다면 사실상 같은 파일이라고 봐도 돼요. 서로 다른 파일이 우연히 같은 SHA-256 값을 가질 확률은 거의 0에 가까워요. 다만 SHA-1은 일부러 같은 값을 만드는 방법이 알려져 있어서 중요한 확인에는 쓰지 않아요.
MD5는 없나요?
MD5는 너무 오래되어 브라우저 기본 기능에 없고, 보안용으로 쓰면 안 돼요. 이 도구는 SHA 계열만 지원해요.