Hacker News new | ask | show | jobs
by 65a 826 days ago
CWOWD CZKZO DLUML TPRHR KXFHH MHIUS TMXON CHQXQ DFMBI APKZV DRFIU SEFLV ZSSPK ESGNE BNRQA QBVHH YMAZ

just to not be cruel, it's an m3 without UKW-D, 3 rotors and a plugboard :)

EDIT: I think I answered my question looking at the code. There are a lot more rotors known (see cryptomuseum). Some things I found while writing an enigma: many online enigmas have some bugs with double stepping the wheel on a single press, which the machine did not do. The Humboldt University Berlin's online enigma is correct. There is also a very similar machine used by the Soviets until the 1980s that you can probably represent with the same datastructures called Fialka: https://en.wikipedia.org/wiki/Fialka.

My test case that returns different results on different emulators is: M3, rotors III, II, I, no ring setting, UKW-B, starting position AEQ. The string ABCDEFGHIJ produces OMUQBCLPVR in minarke.c and produces LUINDKMWNH in the University Humboldt Berlin enigma. I believe the latter is correct.

1 comments

Hey, I'm the original author of the repo -- I noticed a bunch of stars coming in and figured it was coming from Hacker News, heh.

I should probably go and make it clearer in the README, but you're right, by no means is it a full Enigma implementation. It mostly started as a translation of code described in [this post](http://practicalcryptography.com/ciphers/mechanical-era/enig...) from C to Rust (since I was a naïve undergrad interested in Rust).

At some point it would be cool to add the full Enigma functionality. Do you have any guidance for test cases and/or reference implementations?

my own machine with rotors and some proper test vectors https://gist.github.com/williame/94beef4b9afea659864950c29d4...

I also had a fast version in c++ that could trivially brute force messages with an index of coincidence kind of attack, but can't find that code after a quick search of github :(