De codeermachine M-209 werd gedurende de Tweede Wereldoorlog gebruikt door de Amerikaanse strijdkrachten. De M-209, door de US Navy CSP-1500 genoemd, was de Amerikaanse versie van de Hagelin C-38. Het was een draagbare handbediende codeermachine voor vercijfering van tactische berichten. De M-209 was met zijn compacte afmetingen (14 × 8 × 18 cm) een briljant mechanisch ontwerp van de Zweedse cryptografiefabrikant Boris Hagelin.
Hoewel de M-209 qua veiligheid zeker niet hetzelfde niveau haalde als andere bekende toestellen uit die tijd, zoals de Enigma, de Lorenz-machine of de SIGABA, was hij door zijn compacte afmetingen en eenvoud in gebruik zeer geschikt om tactische berichten te vercijferen. De tijd, nodig om de berichten te breken was te lang om er tactisch voordeel op korte termijn mee te bereiken. Er werden in de VS naar schatting 140.000 van deze toestellen in licentie gebouwd door L. C. Smith and Corona Typewriters Incorporated. De M-209 bleef in gebruik bij het Amerikaans leger tot na de Koreaanse Oorlog. De opvolger van de M-209 en C-38, de Hagelin CX-52 met toetsenbord, was de laatste generatie van mechanische codeermachines.
Het vercijferingsprincipe van de M-209 is gebaseerd op verschuiven van het alfabet. Het aantal stappen dat een letter verschoven wordt hangt af van een pseudowillekeurige reeks, gegenereerd door zes roterende wielen en een trommel, die worden ingesteld volgens een geheim sleutelblad.
De zes wielen hebben elk een ander aantal letters met bijhorende instelbare pinnen, van links naar rechts resp 26, 25, 23, 21, 19 en 17 letters. Aan de hand van een geheim sleutelblad worden alle pinnen van de wielen naar links (passief) of rechts (actief) geschoven. Deze wielen worden aan de onderzijde afgetast met zes hefbomen.
Het tweede belangrijke onderdeel van de vercijfering is de trommel. Deze bevat 27 schuivende stangen met op elke stang twee verplaatsbare nokken. Elke nok kan naar een van de zes posities op een stang geschoven worden, of op een van de twee neutrale (passieve) posities. Het instellen van de nokken gebeurt tevens volgens het sleutelblad.
Het derde onderdeel is de indicator, waarmee de operator de te vercijferen letter instelt. Vast aan deze indicator is de afdrukrol bevestigd met het alfabet in omgekeerde volgorde. De indicator is met een tandwiel verbonden aan de trommel, die fungeert als variabel tandwiel.
Om te vercijferen kiest de operator op de indicator de gewenste letter. Vervolgens draait hij de hendel aan de rechterzijde waardoor de trommel een omwenteling maakt. Hierdoor passeren een voor een de stangen met nokken voorbij de schuine uiteinden van de hefbomen die verbonden zijn aan de wielen. Indien een nok ter hoogte komt van een actieve hefboom (bedient door een actieve pin op een wiel) zal deze naar links geforceerd worden. Hierdoor schuift de hele stang op de trommel naar links. Het uiteinde van deze stang is dan een van de tanden van het variabele tandwiel.
Dit variabele tandwiel laat het indicator alfabet een aantal posities verschuiven, evenredig aan het aantal naar rechts verschoven stangen op de trommel. Aangezien de ring met het afdrukalfabet omgekeerd is aan het indicatoralfabet, bekomen we een reciproque vercijfering. Om te ontcijferen dienen we enkel dezelfde bewerking toe te passen als bij vercijfering.
Na vercijfering van een letter worden alle zes wielen één positie verder gedraaid. Aangezien het om zes wielen van verschillende grootte gaat zal dezelfde combinatie van letters, en dus ook van pinnen, zich slechts na 26×25×23×21×19×17 = 101.405.850 stappen herhalen. Elke nieuwe rij wielen, met bijhorende pinnen, zal een ander effect hebben op de 27 stangen van de trommel, waardoor er telkens een andere verschuiving gebeurt.
De vercijferde of ontcijferde tekst wordt op een papieren lint gedrukt. Indien de operator een spatie wil toevoegen, gebruikt hij de letter Z bij vercijfering, een letter die in het Engels niet veel voorkomt. Als bij ontcijfering de letter Z voorkomt, wordt deze bij het afdrukken automatisch vervangen door een spatie. Hierdoor krijgt men de originele structuur van de woorden terug.