--[[ implementation of the RC5 cipher in Lua 03/11/2022 Sean Smith sean@spacealien.xyz w=word size in bits r=number of rounds b=key size in bytes K=secret key u=w/8 (the length of a word in bytes) K[] is the key as an array of bytes c=length of key in words ]] local inspect = require 'inspect' local insert, concat, modf, tostring, char = table.insert, table.concat, math.modf, tostring, string.char local w=64 local r=24 local b=16 local key="globglogabgalab1" local u=8 --length of a word in bytes --local c=2 (with globglogabgalab1 as the key c should =2) local L = {} local t = 2 * (r + 1) --the number of round subkeys required --magic constants for 64bit word size (hex) local P = 0xb7e151628aed2a6b local Q = 0x9e3779b97f4a7c15 --break K into words --u = w / 8 c = math.ceil(math.max(b, 1) / u) print(c) --convert the key into an array of ints local K = {string.byte(key, 1, -1)} print(inspect(K)) L = K print(inspect(L)) local S = {} S[0] = P S[1] = 1 print(t) for i = 1, t - 1 do S[i] = S[i-1] + Q print(S[i]) i = i + 1 end