이 도구가 해결하는 일

두 가지 검증을 담당합니다. 하나는 고전적인 해시 — 반입 파일의 무결성 확인, 값의 SHA-256 다이제스트 계산. 다른 하나는 이 도구의 고유 기능인 로직 지문 — "이 두 소스, 포맷만 다르고 사실 같은 코드 아닌가?"를 확인하는 비교입니다.

SHA-2 계열 — 무엇을 고르나

알고리즘출력 길이(16진수)비고
SHA-25664자무결성 검증의 사실상 표준 — 대부분 이걸로 충분
SHA-38496자더 긴 다이제스트가 요구될 때
SHA-512128자보안 요구사항이 명시하는 경우

MD5·SHA-1은 제공하지 않습니다 — 충돌이 알려진 알고리즘이라, 브라우저 표준(Web Crypto)이 지원하는 SHA-2 계열만 씁니다.

로직 지문 — 공백·주석이 달라도 같은 코드는 같게

일반 해시는 공백 한 칸만 달라도 완전히 다른 값이 나옵니다. 로직 지문은 문자열 리터럴을 보존하면서 주석과 공백을 제거하는 자체 정규화를 거친 뒤 해시를 계산합니다 — 들여쓰기를 바꾸고 주석을 단 사본과 원본이 같은 지문을 갖습니다.

두 소스의 차이일반 SHA-256로직 지문
들여쓰기·줄바꿈만 다름다른 값같은 값
주석 추가·삭제다른 값같은 값
문자열 리터럴 내용 변경다른 값다른 값 (리터럴은 로직의 일부)
변수명 변경다른 값다른 값 (이름도 로직으로 취급)

실무 시나리오

원본:            사본(주석 추가·들여쓰기 변경):
int sum(int a){   // 합계를 구한다
  return a+1;     int sum(int a){
}                     return a + 1;
                  }

일반 SHA-256 → 서로 다른 값
로직 지문   → 동일 (실질 같은 코드)

반입 파일 무결성 검증 — 절차

폐쇄망 반입은 "가져온 파일이 원본 그대로인가"를 증명하는 절차가 핵심입니다. 이 도구를 끼운 표준 순서는:

텍스트 해시와 파일 해시는 대상이 다릅니다 — 같은 내용이라도 파일에는 인코딩·줄바꿈·BOM이 끼어들 수 있어, 문서 내용만 비교하려면 텍스트로 붙여넣는 쪽이 변수를 줄입니다.

자주 겪는 함정

자주 묻는 질문

파일이 업로드되나요?
아니요. 브라우저의 파일 읽기 API로 로컬에서만 읽어 계산하고, 네트워크 전송은 없습니다.
해시로 원문을 복원할 수 있나요?
아니요. 해시는 단방향입니다 — 그래서 무결성 검증에 쓰입니다.
로직 지문이 같으면 100% 같은 코드인가요?
정규화 후 동일하다는 뜻입니다. 공백·주석 차이만 있는 사본이라는 판정으로는 충분하지만, 최종 확인이 필요하면 Diff로 눈으로 대조하세요.
어떤 언어를 지원하나요?
주석·문자열 규칙은 Java·JS/TS 계열 기준입니다. 블록 지문의 함수 분할도 같은 계열에서 동작합니다.
MD5는 왜 없나요?
보안 용도로는 깨진 알고리즘이라 표준(Web Crypto)이 지원하는 SHA-2 계열만 제공합니다.
큰 파일도 되나요?
브라우저 메모리로 읽을 수 있는 크기까지 동작합니다 — 수백 MB 설치 파일 수준은 일반 PC에서 무리 없이 계산됩니다.

함께 쓰는 도구

지문이 다르게 나온 두 소스의 실제 차이는 Diff 비교로 확인하세요. 반입 절차에서 함께 쓰는 명령어(certutil·Get-FileHash)는 자매 앱 DoniKit의 Shell 스니펫에 있습니다.

DoffKit(도프킷) — 개발자 텍스트·코드 툴킷

DoffKit(도프킷)은 개발자가 매일 반복하는 텍스트·코드 손작업을 한 화면에 모은 웹 툴킷입니다. JSON·SQL·XML 포맷터(XML은 문서·트리 뷰어 겸), 들여쓰기 정리, 느슨한 객체 정규화, 인코딩 변환과 암복호화, 텍스트 비교(Diff), 정규식 테스트, 케이스 변환, 해시·로직 지문, 스택트레이스 정리, URL 파싱까지 자주 쓰는 도구를 설치나 회원가입 없이 브라우저에서 바로 씁니다.

모든 계산과 변환은 접속한 기기(브라우저) 안에서 끝나며, 입력한 코드·데이터는 외부 서버로 전송되지 않습니다. 사내망·보안이 민감한 환경에서 온라인 포맷터에 코드를 붙여넣기 꺼려질 때를 위해 만들었습니다. 아래에서 각 도구의 쓰임과 자주 묻는 질문을 정리했습니다.

주요 기능

사용법

포맷터·들여쓰기

한 줄로 뭉친 JSON이나 SQL을 붙여넣으면 사람이 읽을 수 있게 정렬하고 구문을 색으로 구분합니다. XML은 포맷에 더해 문서 뷰 — 꺾쇠·태그 없이 제목·라벨:값·표로 읽는 화면 — 와 접기·검색이 되는 트리 뷰를 제공해, 서버 설정 파일처럼 긴 XML을 훑기 좋습니다. 필드→JSON 서브탭은 id·login처럼 필드 이름만 줄줄이 붙여넣으면 키를 채운 JSON 뼈대를 만들어 주고, 값은 표에서 채웁니다. 전문(고정길이) 모드로 바꾸면 레이아웃(이름·길이·타입)에 맞춰 문자는 공백, 숫자는 0으로 패딩한 TCP 전문을 자동 조립합니다 — 길이 기준은 EUC-KR·UTF-8 바이트, 문자 수 중에서 고릅니다. 느슨한 객체 탭은 따옴표가 빠진 키나 트레일링 콤마처럼 표준을 벗어난 데이터도 정규화해 줍니다.

인코딩·암복호화

Base64·URL 인코딩을 양방향으로 바꾸고, JWT 토큰을 사람이 읽을 수 있게 디코딩합니다. 암복호화는 브라우저 내장 Web Crypto 표준을 써서 키와 평문이 기기 밖으로 나가지 않습니다.

Diff 비교·정규식

두 텍스트나 코드의 바뀐 부분을 줄·글자 단위로 강조해 비교합니다. 정규식 테스터는 패턴과 대상 문자열을 넣으면 일치 위치를 실시간으로 보여주고, 자주 쓰는 패턴 치트시트를 제공합니다.

케이스·해시·스택트레이스·URL

변수명을 카멜/스네이크/케밥으로 바꾸고, 문자열의 SHA-2 해시와 코드의 로직 지문을 계산합니다. 지저분한 스택트레이스에서 원인 체인을 정리하고, URL의 쿼리 파라미터를 표로 풀어냅니다.

자주 묻는 질문

DoffKit은 무료인가요?

네, 모든 도구를 무료로 쓸 수 있습니다. 운영 비용은 페이지에 표시되는 광고로 충당합니다.

회원가입이나 설치가 필요한가요?

아니요. 브라우저로 페이지를 열면 바로 쓸 수 있고, 로그인이나 프로그램 설치가 필요 없습니다.

입력한 코드나 데이터가 서버로 전송되나요?

아니요. 포맷·비교·암복호화 등 모든 처리는 접속한 기기의 브라우저 안에서 이뤄지며, 입력한 내용은 외부 서버로 전송되지 않습니다.

인터넷 연결이 필요한가요?

페이지를 처음 여는 데는 인터넷이 필요합니다. 다만 도구의 계산·변환은 접속한 기기 안에서 처리되어 입력값이 외부로 나가지 않습니다.

어떤 정보가 저장되나요?

테마(다크/라이트)와 마지막으로 연 탭 같은 화면 설정만 브라우저 localStorage에 저장됩니다. 입력한 코드·텍스트 자체는 저장하지 않습니다.

광고와 쿠키는 어떻게 처리되나요?

Google 애드센스 광고가 표시될 수 있으며 광고 목적의 제3자 쿠키가 사용될 수 있습니다. 자세한 내용은 페이지 하단 "개인정보 안내"에서 확인할 수 있습니다.

도구별 페이지

도구 가이드·레퍼런스