유틸리티

해시 함수의 이해와 급여 데이터 무결성 검증

급여 데이터가 위변조되지 않았는지 확인하는 방법 중 하나가 해시 검증이다. 해시 생성기를 통해 해시 함수의 기본 원리를 이해하고, 실무에 어떻게 적용하는지 알아본다.

해시 함수 특성

해시 함수는 입력 데이터를 고정 길이의 해시값으로 변환한다. 중요한 특성 세 가지가 있다.

  • 결정성: 같은 입력은 항상 같은 해시
  • 단방향성: 해시에서 원본을 역산 불가
  • 충돌 저항성: 다른 입력이 같은 해시가 되기 어려움

gogoling.kr/hash-generator에서 다양한 해시 알고리즘을 테스트해볼 수 있다.

SHA-256 vs MD5

MD5는 빠르지만 충돌이 발견되어 보안 용도로는 권장하지 않는다. SHA-256은 현재 표준이다. 더 강력한 SHA-384, SHA-512도 있다.

const crypto = require("crypto"); const hash = crypto.createHash("sha256").update(data).digest("hex");

급여 데이터 무결성 검증

월 급여 데이터를 확정한 후 해시값을 저장해둔다. 나중에 데이터가 변조됐는지 확인하려면 다시 해시를 계산해서 비교한다.

// 저장 시 const salaryData = JSON.stringify(monthlyPayroll); const checksum = sha256(salaryData); store.save({ data: salaryData, checksum });

// 검증 시 const stored = store.get(); if (sha256(stored.data) !== stored.checksum) { alert("데이터 변조 감지!"); }

해시 체인

블록체인처럼 각 월의 해시에 이전 월의 해시를 포함시키면, 과거 데이터도 변조하기 어려워진다.

const currentHash = sha256(previousHash + currentData);

이러면 한 달치만 바꿔도 이후 모든 해시가 달라져서 변조가 드러난다. 해시 생성 원리를 이해하면 이런 구조를 설계할 수 있다.

비밀번호 저장

비밀번호는 해시해서 저장하지만, 일반 해시가 아닌 bcrypt나 Argon2를 쓴다. 솔트와 반복 연산으로 레인보우 테이블 공격을 방어한다.

파일 해시

급여 명세서 PDF 파일의 해시를 저장해두면, 파일이 수정됐는지 확인할 수 있다. 문서 위조 방지에 활용된다.

마치며

해시 함수는 데이터 무결성의 기초다. 직접 테스트해보고 싶다면 온라인 해시 생성기를 활용해보자.