패스워드 저장 · 20비트의 선택
보존할 상태를 고르고, 코드를 고쳐 가며 오타 검사와 복원 범위를 확인하세요.
보유 아이템 · 각 항목은 1비트
코드에는 레벨과 아이템만 들어갑니다. 위치와 강화 효과는 복원할 때 초기값을 씁니다.
32문자 4글자는 20비트입니다. 버전 2비트, 레벨 4비트, 아이템 8비트, 검사값 6비트를 쓰므로 플레이 상태의 몫은 12비트입니다. 정확한 위치와 일시 효과는 저장하지 않고 위치 10, 효과 없음으로 시작합니다.
문자표는 Crockford Base32와 같은 0123456789ABCDEFGHJKMNPQRSTVWXYZ입니다. 길이·문자표 → 비트 복원 → 검사값 → 지원 버전 → 레벨 범위를 순서대로 확인한 뒤 상태를 만듭니다. 자체 예제 레벨 5, 아이템 3은 2G68이 됩니다.
여기서는 (버전 + 레벨 + 아이템) mod 64라는 단순 합을 사용합니다. 5+3을 6+2로 바꾸면 같은 검사값 8로 통과합니다. 데이터와 검사값을 함께 다시 만들 수도 있습니다. HMAC은 비밀키로 메시지를 인증하는 별도 구조이며 이 코드에는 인증 기능이 없습니다.
사람이 적기 쉽지만 상태를 줄여야 합니다. 이 자체 20비트 배치와 mod 64 검사값은 원작 게임 포맷이나 Crockford의 mod 37 검사 방식이 아닙니다. Crockford와 달리 입력을 자동 교정하지 않으며 소문자도 명시적으로 거부합니다.
Crockford · Base32 문자표 ↗ · RFC 2104 · 메시지 인증 ↗ · Godot · 저장할 상태와 직렬화 ↗