유틸리티

진법 변환 이해와 급여 데이터 암호화 기초

보안을 공부하다 보면 진법 변환이 자주 등장한다. 암호화 알고리즘, 해시, 인코딩 등에서 2진수, 16진수를 다루기 때문이다. 진법 변환기로 기초를 익히고 급여 데이터 암호화에 어떻게 적용되는지 알아본다.

진법의 기초

우리가 일상에서 쓰는 10진법, 컴퓨터가 쓰는 2진법, 메모리 주소나 색상 코드에 쓰는 16진법이 대표적이다.

  • 10진법: 0~9 (255)
  • 2진법: 0, 1 (11111111)
  • 16진법: 0~9, A~F (FF)

255 = 11111111(2진) = FF(16진)으로 모두 같은 값이다. telecm.kr/base-converter에서 직접 변환해볼 수 있다.

암호화에서의 활용

AES-256 암호화에서 256은 키 길이가 256비트라는 의미다. 바이트로 하면 32바이트. 이 키를 16진수로 표현하면 64자리 문자열이 된다. 암호화 키를 다룰 때 16진수 변환을 자주 한다.

// 32바이트 키를 16진수로 const key = crypto.randomBytes(32); const hexKey = key.toString("hex"); // 64자리

해시값과 16진수

SHA-256 해시는 256비트, 즉 64자리 16진수 문자열로 표현된다. 급여 데이터의 무결성을 검증할 때 해시값을 저장해두고 나중에 비교한다.

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

해시값이 다르면 데이터가 변조된 것이다.

Base64와의 차이

16진수와 자주 혼동되는 게 Base64다. Base64는 바이너리 데이터를 ASCII 문자열로 인코딩하는 방식이다. 암호화된 급여 데이터를 JSON으로 전송할 때 Base64를 쓴다. 진법 변환과는 다른 개념이지만, 둘 다 데이터 표현 방식이라는 공통점이 있다.

비트 연산

권한 시스템에서 비트 연산을 쓰는 경우가 있다. 읽기=1, 쓰기=2, 삭제=4처럼 2의 거듭제곱으로 권한을 정의하고, OR 연산으로 조합한다.

const READ = 1; // 0001 const WRITE = 2; // 0010 const DELETE = 4; // 0100 const adminPermission = READ | WRITE | DELETE; // 0111 = 7

급여 시스템 적용

급여 데이터 암호화 시 키 관리, 해시 검증, 권한 체크 등에서 진법 변환 지식이 필요하다. 개념이 어렵다면 온라인 진법 변환기로 직접 변환해보면서 익히면 좋다.