Een binaire goppa-code, doorgaans alleen goppa-code genoemd, is een foutcorrigerende code. De code is genoemd naar de Russische wiskundige Velerii Denisovich Goppa. In McEliece-cryptografie wordt bijvoorbeeld gebruikgemaakt van binaire goppa-codes. Een binaire goppa-code is niet hetzelfde als een algebraïsche goppa-code.
Er zijn verschillende definities te geven voor een goppa-code. Hier wordt toegewerkt naar een polynomiale definitie. Voordat we dat kunnen doen zijn er enkele parameters nodig. De volgende gegevens zijn gebruikelijk voor een goppa-code:
In dit geval geldt dat .
Een definitie van de goppa-code , is nu
De polynomen , kunnen gezien worden als vectoren over .
Ze vormen een pariteitscontrole-matrix voor de code .
In 1975 heeft Patterson een algoritme ontwikkeld om in polynomiale tijd fouten te kunnen corrigeren uit de goppa-code.
Voordat het algoritme weergegeven kan worden, is de definitie nodig van de norm van een polynoom.
Voor een polynoom geldt dat de norm , met de graad van .
Bij rationale functies geldt . Bijvoorbeeld .
Het doel is om maximaal fouten te verbeteren uit eengoppa-code . We starten met een woord , met maximaal fouten. Dat betekent dat er een coodewoord is zodat er in het codewoord hoogstens maal een 1 met een 0 verwisseld is, of andersom.
Voor een uitgebreid voorbeeld van dit algoritme wordt verwezen naar het artikel van Bernstein.