rc5/encrypt.lua

71 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
local concat
local tostring
local modf
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 = {}
--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)}
for i = 1, #K do
print(K[i])
end
--for i = b-1, down to 0
--becuse lua starts tables at 1 this is changed to
L[c] = 0
for i = b, 1, -1 do
if L[i/u] == nil then
L[i/u] = 0
end
L[i/u] = (L[i/u] << 8) + K[i]
print(i)
end
print(inspect(L))