리드-솔로몬 부호화·지움 복구 계산기
메시지 바이트를 GF(256) 다항식으로 나눠 패리티를 만드는 실제 부호화 과정과, 일부 바이트를 지웠을 때 선형방정식으로 되살리는 복구 과정을 그대로 보여줍니다.
영문·숫자·기호(바이트 0~255). 12자까지.
이 개수만큼 지워도 복구할 수 있습니다.
코드워드
[72, 69, 76, 76, 79, 142, 148, 89, 1]
메시지 5바이트 + 패리티 4바이트 = 코드워드 9바이트
바이트를 눌러 지워 보세요 — 지금 0개 지움 (패리티 4개까지 복구 가능)
회색은 메시지 바이트, 파란색은 패리티 바이트입니다.
사용 방법
- 1메시지를 알파벳·숫자로 입력합니다(글자 하나가 바이트 하나).
- 2패리티 개수(ecCount)를 정합니다 — 이 개수만큼 지워도 복구할 수 있습니다.
- 3생성다항식·패리티·코드워드와, 코드워드를 α⁰..α^(ecCount-1)에 대입하면 전부 0이 되는지(신드롬 검사) 확인합니다.
- 4코드워드에서 바이트 몇 개를 지워 보고, 선형방정식을 풀어 원래 값이 정확히 복구되는지 봅니다.
자주 묻는 질문
메시지 바이트를 다항식의 계수로 보고, 근이 α⁰..α^(t-1)인 생성다항식으로 나눕니다. 나눈 나머지가 곧 패리티 바이트(t개)이고, 「메시지+패리티」를 이어 붙인 코드워드는 정의상 생성다항식으로 나누어떨어집니다 — 그래서 α⁰..α^(t-1)을 대입하면 전부 0이 나옵니다. QR코드·CD·위성통신이 실제로 쓰는 방식입니다.
코드워드가 생성다항식의 근에서 0이 된다는 조건에서, 아는 값을 오른쪽으로 넘기면 모르는 값(지운 자리)에 대한 일차방정식이 나옵니다. 지운 개수만큼의 방정식을 골라 가우스 소거로 풀면 유일한 해가 나옵니다. 이 계수 행렬은 서로 다른 지수의 밴더몬드 행렬이라 지운 개수가 패리티 개수를 넘지 않는 한 항상 풀립니다.
복구할 수 없습니다. 미지수(지운 값)가 방정식(패리티 개수)보다 많아지기 때문입니다. 리드-솔로몬 부호가 「패리티를 t개 붙이면 지움을 정확히 t개까지 견딘다」고 말하는 것이 바로 이 지점입니다.
galois-field는 GF(2^m) 위의 사칙연산(덧셈·곱셈·역원)만 보여주는 계산기이고, erasure-coding은 k+m 조각을 저장할 때 늘어나는 용량 비율만 계산합니다. 이 계산기는 그 사이에 있는 실제 부호화·복호 과정 자체 — 생성다항식으로 나눠 패리티를 만들고, 선형방정식으로 지운 자리를 되살리는 과정 — 를 바이트 단위로 보여줍니다.
전송되지 않습니다. 모든 계산은 브라우저 안에서 이뤄지고, 입력값은 이 기기에만 남습니다.
알아두면 좋은 점
- GF(256) 원시다항식은 0x11D(x⁸+x⁴+x³+x²+1)를 씁니다. QR코드·CD·DVD가 흔히 쓰는 값과 같고, dogus 자체 QR 생성기(src/lib/calc/qr.ts)와 같은 방식입니다.
- 부호화 검증은 두 가지입니다 — ① 코드워드를 α⁰..α^(ecCount-1)에 대입하면 전부 0이 되는지(신드롬 검사, 코드워드의 정의 그 자체), ② 같은 데이터·같은 패리티 개수를 dogus QR 생성기의 리드-솔로몬 함수에도 넣어 패리티 바이트가 정확히 같은지 이중 대조. QR 생성기는 실제로 브라우저 바코드 판독기로 스캔까지 확인해 둔 코드입니다.
- 지움 복구는 지운 자리 1개부터 패리티 개수만큼(최대)까지 다양한 조합으로 되살려, 원래 코드워드와 정확히 같은지 테스트로 확인했습니다. 패리티보다 하나라도 더 지우면 에러로 거부되는 것도 확인했습니다.
- 메시지 12글자·패리티 2~8개까지 다룹니다. 이 계산기는 지운 위치를 아는 「지움(erasure)」만 복구합니다 — 어느 바이트가 틀렸는지 모르는 채 오류를 찾아 고치는 것(에러 정정)은 다루지 않습니다.
함께 보면 좋은 도구
마지막 검증: 2026년 9월 3일 · 결과는 참고용 추정치입니다.