HanBase256
복사할 땐 짧게. 필요할 땐 직접 입력.
Hexadecimal은 영문자와 숫자가 섞여 있어 입력하기 어렵습니다. 한국어로는 2와 e가 모두 ‘이(yi)’로 들립니다.
Base64/85는 짧지만 직접 입력하기 어렵습니다.
BIP39는 읽기 쉬운 단어를 쓰지만 너무 깁니다.
SHA-256: Hexadecimal 64자리 → 한글 32음절. 체크섬은 선택 사항.
온라인 변환기
텍스트 → SHA-256 → 표현 비교.
바이트 문자표
한 바이트, 한 음절. 이 표로 직접 코드를 만들 수 있습니다.
Hexadecimal 행 + 열: F0 + 01 = F1.좌우로 스크롤하면 모든 열을 볼 수 있습니다.
| HEX | +00 | +01 | +02 | +03 | +04 | +05 | +06 | +07 | +08 | +09 | +0A | +0B | +0C | +0D | +0E | +0F |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 00 | 가 | 갈 | 감 | 강 | 개 | 거 | 건 | 검 | 결 | 경 | 고 | 곡 | 골 | 곰 | 공 | 과 |
| 10 | 관 | 광 | 교 | 구 | 국 | 군 | 굴 | 권 | 귀 | 그 | 극 | 근 | 금 | 기 | 길 | 김 |
| 20 | 나 | 난 | 남 | 내 | 너 | 노 | 농 | 누 | 니 | 다 | 단 | 달 | 당 | 대 | 더 | 덕 |
| 30 | 도 | 돈 | 돌 | 동 | 두 | 드 | 들 | 등 | 디 | 라 | 란 | 러 | 레 | 력 | 로 | 론 |
| 40 | 루 | 리 | 린 | 마 | 만 | 말 | 망 | 매 | 머 | 면 | 명 | 모 | 목 | 무 | 문 | 물 |
| 50 | 미 | 민 | 밀 | 바 | 반 | 발 | 방 | 배 | 백 | 버 | 번 | 벌 | 범 | 변 | 병 | 보 |
| 60 | 봄 | 봉 | 부 | 북 | 분 | 불 | 비 | 빈 | 사 | 산 | 살 | 삼 | 상 | 색 | 생 | 서 |
| 70 | 석 | 선 | 설 | 섬 | 성 | 세 | 소 | 속 | 손 | 솔 | 송 | 수 | 순 | 술 | 스 | 승 |
| 80 | 시 | 식 | 신 | 실 | 심 | 아 | 악 | 안 | 알 | 암 | 야 | 약 | 양 | 어 | 언 | 엄 |
| 90 | 에 | 여 | 역 | 연 | 열 | 영 | 오 | 온 | 와 | 왕 | 외 | 요 | 용 | 우 | 운 | 울 |
| A0 | 원 | 월 | 위 | 유 | 육 | 윤 | 은 | 이 | 인 | 일 | 임 | 자 | 작 | 장 | 저 | 적 |
| B0 | 전 | 절 | 점 | 정 | 제 | 조 | 종 | 주 | 준 | 중 | 지 | 직 | 진 | 짐 | 차 | 참 |
| C0 | 창 | 처 | 천 | 철 | 청 | 체 | 초 | 촌 | 총 | 최 | 추 | 축 | 출 | 충 | 치 | 친 |
| D0 | 침 | 카 | 칼 | 커 | 코 | 쿠 | 크 | 키 | 타 | 탄 | 탈 | 태 | 터 | 토 | 통 | 투 |
| E0 | 트 | 티 | 파 | 판 | 팔 | 퍼 | 편 | 평 | 표 | 푸 | 풍 | 피 | 필 | 하 | 학 | 한 |
| F0 | 항 | 해 | 행 | 향 | 허 | 현 | 형 | 호 | 혼 | 홍 | 화 | 환 | 황 | 회 | 후 | 히 |
코드 예제
import hashlib
import hanbase256
digest = hashlib.sha256(
b"The quick brown fox jumps over the lazy dog"
).digest()
encoded = hanbase256.encode_with_checksum(digest)
# Recover the original hash.
assert hanbase256.decode_with_checksum(encoded) == digest
print(hanbase256.decode_with_checksum(encoded).hex())
import { encodeWithChecksum, decodeWithChecksum,
sha256, toHex }
from './hanbase256.mjs';
const bytes = new TextEncoder().encode(
'The quick brown fox jumps over the lazy dog'
);
const digest = await sha256(bytes);
const encoded = await encodeWithChecksum(digest);
// Recover the original hash.
const recovered = await decodeWithChecksum(encoded);
console.log(toHex(recovered));
FAQ
누구를 위한 도구인가요?
한글 사용자를 위한 표현입니다. 주로 복사·붙여넣기로 쓰고, 필요하면 직접 입력하세요.
왜 256음절인가요?
영어는 26글자입니다. 현대 한글은 11,172음절입니다. 그중 익숙한 256음절을 씁니다. 256 = 2⁸이므로 한 음절에 한 바이트를 담습니다. Unicode ↗
Hexadecimal이나 Base64/85와 어떻게 다른가요?
Base64/85는 짧은 표현에 초점을 둡니다. HanBase256은 한글 사용자에게 길이와 입력 편의성의 균형을 제공합니다. 한 음절에 한 바이트를 담습니다. Base16 / Base64 ↗
BIP39와 어떻게 다른가요?
BIP39는 256비트를 24단어로 씁니다. HanBase256은 32음절을 쓰고, 체크섬은 선택할 수 있습니다. BIP39 ↗
변환기는 무엇을 하나요?
인코더는 텍스트의 해시를 여러 형식으로 비교합니다. 디코더는 원문이 아닌 SHA-256 해시를 복원합니다.
암호화나 압축인가요?
둘 다 아닙니다. 해시를 쓰는 방식만 바꿉니다. 32음절은 UTF-8로 96바이트입니다. 체크섬은 별도입니다. Base64도 압축은 아닙니다.
+체크섬은 무엇인가요?
추가한 한 글자로 오류를 찾습니다. 체크섬 없이 32음절만 디코딩해도 됩니다. 체크섬이 있으면 검증합니다. 틀리면 오류를 표시합니다.