Main step of GOST 28147-89: Difference between revisions

Content added Content deleted
(Added Wren)
(→‎{{header|Wren}}: Now uses 'fmt' module.)
Line 1,120:
 
=={{header|Wren}}==
{{libheader|fmt}}
{{trans|Go}}
<lang ecmascript>classimport GOST"/fmt" {for Fmt
 
class GOST {
// assumes 's' is an 8 x 16 integer array
construct new(s) {
Line 1,160 ⟶ 1,163:
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 ⟶ 1,180:
var g = GOST.new(cbrf)
g.mainStep(input, key)
for (b in g.enc) System.write("[%(toHexByteFmt.callxz(2, b))]")
System.print()</lang>