(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