rc5/encrypt.lua
2022-03-23 01:14:06 -04:00

56 lines
1.0 KiB
Lua

--[[
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