@@ -30,20 +30,23 @@ An atom.
33− ++ feen :: conceal structure v2
33+ ++ feen :: conceal structure v2
34− |= pyn=@ ^- @
34+ |= pyn/@ ^- @
35− ?: &((gte pyn 0x1.0000) (lte pyn 0xffff.ffff))
35+ ?: &((gte pyn 0x1.0000) (lte pyn 0xffff.ffff))
36− (add 0x1.0000 (fice (sub pyn 0x1.0000)))
36+ (add 0x1.0000 (fice (sub pyn 0x1.0000)))
37− ?: &((gte pyn 0x1.0000.0000) (lte pyn 0xffff.ffff.ffff.ffff))
37+ ?: &((gte pyn 0x1.0000.0000) (lte pyn 0xffff.ffff.ffff.ffff))
38− =+ lo=(dis pyn 0xffff.ffff)
38+ =+ lo=(dis pyn 0xffff.ffff)
39− =+ hi=(dis pyn 0xffff.ffff.0000.0000)
39+ =+ hi=(dis pyn 0xffff.ffff.0000.0000)
40− %+ con hi
40+ %+ con hi
41− (add 0x1.0000 (fice (sub lo 0x1.0000)))
41+ (add 0x1.0000 (fice (sub lo 0x1.0000)))
48------------------------------------------------------------------------
51------------------------------------------------------------------------
@@ -54,7 +57,7 @@ XX
54Randomly permutes atoms that fit into 17 to 32 bits into one another, and
57Randomly permutes atoms that fit into 17 to 32 bits into one another, and
55randomly permutes the low 32 bits of atoms that fit into 33 to 64 bits;
58randomly permutes the low 32 bits of atoms that fit into 33 to 64 bits;
56otherwise, passes the atom through unchanged. The permutation is the inverse of
59otherwise, passes the atom through unchanged. The permutation is the inverse of
57−the one applied by [`++feen`]().
60+the one applied by `++feen`.
@@ -69,16 +72,17 @@ An atom.
72− ++ fend :: restore structure v2
75+ ++ fend :: restore structure v2
73− |= cry=@ ^- @
76+ |= cry/@ ^- @
74− ?: &((gte cry 0x1.0000) (lte cry 0xffff.ffff))
77+ ?: &((gte cry 0x1.0000) (lte cry 0xffff.ffff))
75− (add 0x1.0000 (teil (sub cry 0x1.0000)))
78+ (add 0x1.0000 (teil (sub cry 0x1.0000)))
76− ?: &((gte cry 0x1.0000.0000) (lte cry 0xffff.ffff.ffff.ffff))
79+ ?: &((gte cry 0x1.0000.0000) (lte cry 0xffff.ffff.ffff.ffff))
77− =+ lo=(dis cry 0xffff.ffff)
80+ =+ lo=(dis cry 0xffff.ffff)
78− =+ hi=(dis cry 0xffff.ffff.0000.0000)
81+ =+ hi=(dis cry 0xffff.ffff.0000.0000)
79− %+ con hi
82+ %+ con hi
80− (add 0x1.0000 (teil (sub lo 0x1.0000)))
83+ (add 0x1.0000 (teil (sub lo 0x1.0000)))
@@ -89,7 +93,6 @@ Examples
92−Applies a 3-round Feistel-like cipher to randomly permute atoms in the range `0` to `2^32 - 2^16`. The construction given in Black and Rogaway is ideal for a domain with a size of that form, and as with a conventionel Feistel cipher, three rounds suffice to make the permutation pseudorandom.
@@ -104,15 +107,17 @@ An atom.
107− ++ fice :: adapted from
110+ ++ fice :: adapted from
108− |= nor=@ :: black and rogaway
111+ |= nor/@ :: black and rogaway
109− ^- @ :: "ciphers with
112+ ^- @ :: "ciphers with
110− =+ ^= sel :: arbitrary finite
113+ =+ ^= sel :: arbitrary finite
111− %+ rynd 2 :: domains", 2002
114+ %+ rynd 2 :: domains", 2002
112− %+ rynd 1
115+ %+ rynd 1
113− %+ rynd 0
116+ %+ rynd 0
114− [(mod nor 65.535) (div nor 65.535)]
117+ [(mod nor 65.535) (div nor 65.535)]
115− (add (mul 65.535 -.sel) +.sel)
118+ (add (mul 65.535 -.sel) +.sel)
@@ -123,7 +128,7 @@ Examples
126−Applies the reverse of the Feistel-like cipher applied by [`++fice`](). Unlike
131+Applies the reverse of the Feistel-like cipher applied by `++fice`. Unlike
127a conventional Feistel cipher that is its own inverse if keys are used in
132a conventional Feistel cipher that is its own inverse if keys are used in
128reverse order, this Feistel-like cipher uses two moduli that must be swapped
133reverse order, this Feistel-like cipher uses two moduli that must be swapped
129when applying the reverse transformation.
134when applying the reverse transformation.
@@ -141,15 +146,18 @@ An atom.
144− ++ teil :: reverse ++fice
149+ ++ teil :: reverse ++fice
145− |= vip=@
150+ |= vip/@
147− =+ ^= sel
152+ =+ ^= sel
148− %+ rund 0
153+ %+ rund 0
149− %+ rund 1
154+ %+ rund 1
150− %+ rund 2
155+ %+ rund 2
151− [(mod vip 65.535) (div vip 65.535)]
156+ [(mod vip 65.535) (div vip 65.535)]
152− (add (mul 65.535 -.sel) +.sel)
157+ (add (mul 65.535 -.sel) +.sel)
@@ -160,7 +168,7 @@ Examples
163−A single round of the Feistel-like cipher [`++fice`](). AES ([`++aesc`]()) is
171+A single round of the Feistel-like cipher `++fice`. AES (`++aesc`) is
164used as the round function.
172used as the round function.
@@ -177,7 +185,7 @@ Source
179 ++ rynd :: feistel round
187 ++ rynd :: feistel round
180− |= [n=@ l=@ r=@]
188+ |= [n/@ l/@ r/@]
183 ?~ (mod n 2)
191 ?~ (mod n 2)
@@ -193,7 +201,7 @@ Examples
196−A single round of the Feistel-like reverse cipher [`++teil`]().
204+A single round of the Feistel-like reverse cipher `++teil`.
@@ -208,13 +216,13 @@ A cell of two atoms.
211− ++ rund :: reverse round
219+ ++ rund :: reverse round
212− |= [n=@ l=@ r=@]
220+ |= {n/@ l/@ r/@}
213− ^- [@ @]
221+ ^- {@ @}
215− ?~ (mod n 2)
223+ ?~ (mod n 2)
216− (~(dif fo 65.535) l (en:aesc (snag n raku) r))
224+ (~(dif fo 65.535) l (en:aesc (snag n raku) r))
217− (~(dif fo 65.536) l (en:aesc (snag n raku) r))
225+ (~(dif fo 65.536) l (en:aesc (snag n raku) r))
@@ -229,12 +237,12 @@ XX
232−A list of atoms of [odor]() [`@ux`]() (hexadecimal).
240+A list of atoms of odor `@ux` (hexadecimal).
237−Arbitrary keys for use with [`++aesc`]().
245+Arbitrary keys for use with `++aesc`.