본문 바로가기

해시 생성기 — 텍스트·파일의 MD5·SHA-256·SHA-512 계산과 비교

텍스트나 파일의 MD5·SHA-1·SHA-256·SHA-384·SHA-512 해시를 한 번에 계산하고, 받은 해시값을 붙여 넣으면 어느 것과 일치하는지 알려 줍니다. 파일은 업로드하지 않고 이 브라우저에서 계산합니다.

JSON 포맷터·검증기

JSON 을 붙여 넣으면 바로 검사하고, 틀린 곳은 줄과 칸으로 짚어 줍니다. 들여쓰기 정렬·한 줄 압축·YAML 변환·트리 보기를 지원하며, 큰 숫자와 키 순서를 바꾸지 않고 그대로 둡니다.

결과
왼쪽에 JSON 을 붙여 넣으면 여기에 결과가 나옵니다. 처음이라면 위쪽 "예시" 버튼을 눌러 보세요.
입력을 기다리는 중입니다.

정규식 테스터

패턴과 플래그를 넣으면 테스트 문자열에서 일치하는 곳을 색으로 칠하고, 캡처 그룹과 치환 결과를 보여 줍니다. 브라우저의 JavaScript 정규식 엔진으로 그대로 실행합니다.

패턴을 입력하세요.
일치 목록

일치하는 곳이 없습니다.

$1, $2 는 번호 그룹, $<이름> 은 이름 붙은 그룹, $& 는 일치한 전체입니다. 비워 두면 치환하지 않습니다.

크론 표현식 해석기

크론 표현식을 사람이 읽는 문장으로 풀고, 고른 시간대 기준으로 다음 실행 시각 5개를 계산합니다. 분·시·일·월·요일 다섯 칸의 표준 crontab 형식입니다.

칸별 해석
다음 실행 시각

    서버의 크론은 보통 서버 시간대로 돕니다. GitHub Actions 의 schedule 과 많은 클라우드 스케줄러는 UTC 기준이니, 한국 시간으로 맞추려면 9시간을 빼서 적어야 합니다.

    JWT 디코더

    JWT 를 붙여 넣으면 헤더와 페이로드를 풀어 보여 주고, 만료(exp)·발급(iat)·유효 시작(nbf) 시각을 날짜로 바꿉니다. HS256·HS384·HS512 서명은 비밀 키로 검증할 수 있으며, 토큰과 키는 이 브라우저 밖으로 나가지 않습니다.

    토큰을 기다리는 중입니다.
    헤더
    
                    
    페이로드
    
                    
    시각 클레임

    exp·iat·nbf 클레임이 없습니다.

    비밀 키를 넣으면 서명을 검증합니다.

    Base64·URL 인코딩

    글자나 파일을 Base64 로 바꾸고, Base64 를 원래 글자로 되돌립니다. URL-safe 알파벳·빠진 패딩·data: URL 도 읽습니다. URL 인코딩(퍼센트 인코딩)도 여기서 합니다. 한글은 UTF-8 로 처리합니다.

    결과
    
                    
    입력을 기다리는 중입니다.

    유닉스 타임스탬프 변환

    유닉스 타임스탬프를 날짜로, 날짜를 타임스탬프로 바꿉니다. 초·밀리초·마이크로초·나노초는 자릿수로 알아서 가리고, 시간대가 없는 날짜는 고른 시간대의 시각으로 읽습니다.

    지금
    밀리초
    타임스탬프나 날짜를 넣으세요.
    변환 결과

    시간대가 적히지 않은 날짜(예: 2026-09-24 09:30)는 위에서 고른 시간대의 시각으로 읽습니다. 끝에 Z 나 +09:00 이 있으면 그 시간대를 따릅니다. 값을 누르면 복사됩니다.

    해시 생성

    텍스트나 파일의 MD5·SHA-1·SHA-256·SHA-384·SHA-512 를 한 번에 계산합니다. 받은 해시값을 붙여 넣으면 어느 것과 일치하는지 알려 줍니다. 파일은 업로드하지 않고 이 브라우저에서 계산합니다.

    입력을 기다리는 중입니다.

    MD5 와 SHA-1 은 충돌을 만드는 방법이 알려져 있어 서명·비밀번호 같은 보안 용도로 쓰면 안 됩니다. 내려받은 파일이 원본과 같은지 확인할 때는 SHA-256 을 쓰세요. 값을 누르면 복사됩니다.

    자주 묻는 질문

    붙여 넣은 JSON이나 테스트 문자열이 서버로 전송되나요?
    아니요. 검사·변환·매치·계산은 전부 이 브라우저 안에서 끝나며 입력한 내용은 어디로도 보내지 않고 저장하지도 않습니다. API 응답이나 설정 파일처럼 민감한 내용을 붙여 넣어도 됩니다. 이 브라우저에는 마지막으로 연 탭과 들여쓰기 같은 보기 설정만 남깁니다.
    JSON을 정렬했더니 숫자나 키 순서가 바뀌지 않나요?
    바뀌지 않습니다. 이 포맷터는 JavaScript의 JSON.parse를 거치지 않고 직접 읽기 때문에, 2의 53제곱을 넘는 큰 정수(예: 트위터·디스코드 ID)나 1.0 같은 숫자 표기를 원문 그대로 둡니다. "10", "2" 처럼 숫자로 된 키가 앞으로 끌려가는 일도 없습니다. 같은 키가 두 번 나오면 둘 다 남기고 경고로 알려 줍니다.
    주석이나 끝에 쉼표가 있는 JSON도 되나요?
    JSON 표준은 주석, 마지막 항목 뒤의 쉼표, 작은따옴표 문자열을 허용하지 않아서 오류로 표시합니다. 다만 흔한 실수라 "끝에 쉼표가 남았습니다", "작은따옴표는 쓸 수 없습니다"처럼 무엇이 문제인지와 그 위치를 짚어 주므로, 그 자리만 고치면 됩니다.
    정규식은 어느 언어의 문법을 따르나요?
    브라우저의 JavaScript(ECMAScript) 정규식 엔진으로 그대로 실행합니다. 이름 붙은 그룹, 뒤쪽 탐색(lookbehind), 유니코드 속성(u 플래그에서 \p{L} 등)을 쓸 수 있습니다. PCRE·Python에만 있는 소유 수량자, 원자 그룹, \A·\Z 같은 문법은 지원하지 않으니 다른 언어에서 쓸 패턴이라면 그쪽 문법 차이를 한 번 확인하세요.
    "1.5초 안에 끝나지 않았습니다"는 무슨 뜻인가요?
    (a+)+$ 처럼 수량자가 겹친 패턴은 일치하지 않는 입력에서 경우의 수를 폭발적으로 되짚느라 몇 분씩 멈출 수 있습니다(치명적 역추적). 이 페이지는 정규식을 별도 작업 스레드에서 돌리고 1.5초가 지나면 끊기 때문에 화면이 멈추지 않습니다. 이 메시지가 보이면 실제 서비스에서도 같은 입력으로 서버가 멈출 수 있다는 신호이니 수량자 중첩을 풀어 주세요.
    크론에서 일(날짜)과 요일을 둘 다 지정하면 어떻게 되나요?
    표준 crontab은 둘 다 별표가 아니면 "둘 중 하나라도 맞으면" 실행합니다. 예를 들어 0 9 1 * 1 은 매월 1일, 그리고 매주 월요일 오전 9시에 돕니다. 요일의 0과 7은 둘 다 일요일이고, MON·JAN 같은 영어 약자도 쓸 수 있습니다. 초 칸이 붙은 6칸 형식(Quartz·Spring)과 L·W·# 같은 확장 문법은 지원하지 않습니다.
    JWT 비밀 키를 넣어도 안전한가요?
    토큰과 키는 서버로 보내지 않고, 서명 검증은 브라우저에 들어 있는 Web Crypto 로만 계산하며 어디에도 저장하지 않습니다. 그래도 운영 서비스의 실제 비밀 키는 어떤 웹 도구에도 넣지 않는 것이 원칙이니, 개발·테스트용 키로 확인하세요. RS256·ES256 처럼 공개 키로 검증하는 토큰은 내용만 풀어 보여 줍니다. JWT 의 페이로드는 암호화가 아니라 누구나 풀어 볼 수 있는 인코딩이라는 점도 기억해 두세요.
    MD5 나 SHA-256 으로 비밀번호를 저장해도 되나요?
    안 됩니다. MD5 와 SHA-1 은 같은 해시가 나오는 두 입력을 만드는 방법이 알려져 있고, SHA-256 도 계산이 너무 빨라서 비밀번호처럼 짧은 값은 무차별 대입으로 금방 찾아집니다. 비밀번호는 bcrypt·scrypt·Argon2 처럼 일부러 느리게 만든 함수에 솔트를 더해 저장해야 합니다. 이 도구의 해시는 내려받은 파일이 원본과 같은지 확인하는 용도로 쓰세요.
    타임스탬프가 초인지 밀리초인지 어떻게 구분하나요?
    자릿수로 가립니다. 지금 시각 기준으로 초는 10자리, 밀리초는 13자리, 마이크로초는 16자리, 나노초는 19자리입니다. 그래서 11자리까지는 초, 14자리까지는 밀리초, 17자리까지는 마이크로초, 그보다 길면 나노초로 읽고, 어떻게 읽었는지 결과 위에 적어 둡니다. JavaScript 의 Date.now() 는 밀리초, 유닉스 명령 date +%s 와 대부분의 서버 언어는 초를 씁니다.

    함께 쓰면 좋은 도구