(Arne Babenhauserheide)
2013-12-26: still wrong, but the code looks better still wrong, but the code looks better
diff --git a/examples/tinyenc.w b/examples/tinyenc.w --- a/examples/tinyenc.w +++ b/examples/tinyenc.w @@ -10,38 +10,38 @@ logxor 1 3 define delta #x9e3779b9 -define : uint32! number +define : uint32 number . "ensure that the number fits a uint32" modulo number : integer-expt 2 32 define : encrypt v k . "Encrypt the 64bit (8 byte, big endian) value V with the 128bit key K (16 byte)." - let + let* : k0 : ash k -96 - k1 : modulo (ash k -64) : integer-expt 2 32 - k2 : modulo (ash k -32) : integer-expt 2 64 - k3 : modulo k : integer-expt 2 96 + k1 : uint32 : ash k -64 + k2 : uint32 : ash k -32 + k3 : uint32 k let loop : sum delta cycle 0 v0 : ash v -32 - v1 : modulo v : integer-expt 2 32 + v1 : uint32 v if : = cycle 32 + v1 : * v0 : integer-expt 2 32 let : v0tmp - uint32! + uint32 + v0 logxor + k0 : ash v1 -4 + v1 sum + k1 : ash v1 5 loop - modulo (+ sum delta) : integer-expt 2 32 + uint32 : + sum delta + cycle 1 . v0tmp - uint32! + uint32 + v1 logxor + k2 : ash v0tmp -4 @@ -50,31 +50,31 @@ define : encrypt v k define : decrypt v k . "Decrypt the 64bit (8 byte, big endian) value V with the 128bit key K (16 byte)." - let + let* : k0 : ash k -96 - k1 : modulo (ash k -64) : integer-expt 2 32 - k2 : modulo (ash k -32) : integer-expt 2 64 - k3 : modulo k : integer-expt 2 96 + k1 : uint32 : ash k -64 + k2 : uint32 : ash k -32 + k3 : uint32 k let loop : sum #xc6ef3720 cycle 0 v0 : ash v -32 - v1 : modulo v : integer-expt 2 32 + v1 : uint32 v if : = cycle 32 + v1 : * v0 : integer-expt 2 32 let : v1tmp - uint32! + uint32 - v1 logxor + k2 : ash v0 -4 + v0 sum + k3 : ash v0 5 loop - modulo (+ sum delta) : integer-expt 2 32 + uint32 : + sum delta + cycle 1 - uint32! + uint32 - v0 logxor + k0 : ash v1tmp -4