Hacker News new | past | comments | ask | show | jobs | submit login
Engima Breaker in Rust (github.com/ikeviny)
73 points by wkaisertexas 9 months ago | hide | past | favorite | 16 comments



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.


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 :(



Engima → Enigma


The title itself was ciphertext.


But not an Enigma ciphertext, as it cannot map back to the same letter.


Actually, Enigma is larger.


Ah everyone should make a raytracer and an enigma cracker :)

My own exploration https://williame.github.io/post/145830743193.html


Excellent stuff


In Rust!









Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: