Main step of GOST 28147-89: Difference between revisions
Content added Content deleted
(Added Wren) |
(→{{header|Wren}}: Now uses 'fmt' module.) |
||
Line 1,120: | Line 1,120: | ||
=={{header|Wren}}== |
=={{header|Wren}}== |
||
{{libheader|fmt}} |
|||
{{trans|Go}} |
{{trans|Go}} |
||
<lang ecmascript> |
<lang ecmascript>import "/fmt" for Fmt |
||
class GOST { |
|||
// assumes 's' is an 8 x 16 integer array |
// assumes 's' is an 8 x 16 integer array |
||
construct new(s) { |
construct new(s) { |
||
Line 1,160: | Line 1,163: | ||
b[3] = (u >> 24) & 0xff |
b[3] = (u >> 24) & 0xff |
||
} |
} |
||
} |
|||
var hexDigits = "0123456789abcdef" |
|||
var toHexByte = Fn.new { |x| |
|||
x = x & 0xff |
|||
if (x == 0) return "00" |
|||
var hex = "" |
|||
while (x > 0) { |
|||
hex = hex + "%(hexDigits[x%16])" |
|||
x = (x/16).floor |
|||
} |
|||
if (hex.count == 2) return hex[1..0] |
|||
return "0" + hex |
|||
} |
} |
||
Line 1,191: | Line 1,180: | ||
var g = GOST.new(cbrf) |
var g = GOST.new(cbrf) |
||
g.mainStep(input, key) |
g.mainStep(input, key) |
||
for (b in g.enc) System.write("[%( |
for (b in g.enc) System.write("[%(Fmt.xz(2, b))]") |
||
System.print()</lang> |
System.print()</lang> |
||