패스워드 저장 · 20비트의 선택

네 글자로 돌아오는 모험

보존할 상태를 고르고, 코드를 고쳐 가며 오타 검사와 복원 범위를 확인하세요.

2G68
코드의 정보량—
검사 단계—
복원된 필드—

원인과 해결

문제 · 짧은 코드가 모든 순간을 담을 수는 없습니다

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 · 저장할 상태와 직렬화 ↗