luarc5 is an implementation of RC5 in Lua. RC5 is a symmetric-key block cipher designed by Ronald Rivest in 1994. Ronald Rivest is the same man behind the once ubiquitous RC4 algorithm that was used in WEP and many telecom applications. The RC5 cipher is unique in that it introduces the idea of data dependent rotations. A derivative of RC5, RC6 was submitted to the AES competition. RC5 itself is not a commonly used cipher.
I chose Lua for this project was because of its speed and simplicity. Lua is fast, especially when using its just-in-time compiler. Lua is also easy to read which I like.
Implementing RC5 in Lua presented some minor challenges. Lua starts its data structures at index 1, whereas C starts at an index of 0. Converting the pseudocode from the paper to start counting at 1 instead of 0 took a little time, however once you get used to the Lua way things become pretty easy to understand.
I learned a lot about encryption doing this project. If I ever get around to trying Go I will definitely do another another encryption algorithm project.