diff options
Diffstat (limited to 'kattis-kth/aes/src/main.zig')
-rw-r--r-- | kattis-kth/aes/src/main.zig | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/kattis-kth/aes/src/main.zig b/kattis-kth/aes/src/main.zig new file mode 100644 index 0000000..cec264f --- /dev/null +++ b/kattis-kth/aes/src/main.zig @@ -0,0 +1,22 @@ +const std = @import("std"); + +pub fn main() !void { + const stdin = std.io.getStdIn().reader().any(); + const stdout = std.io.getStdOut().writer().any(); + + const key = try stdin.readBytesNoEof(16); + const aes = std.crypto.core.aes.Aes128.initEnc(key); + + var input: [1024 * 16]u8 = undefined; + while (true) { + const unalignedLen = try stdin.read(&input); + if (unalignedLen == 0) break; + const len = std.mem.alignBackward(usize, unalignedLen, 16); + std.debug.assert(len == unalignedLen); + var i: usize = 0; + while (i < len) : (i += 16) { + aes.encrypt(input[i..][0..16], input[i..][0..16]); + } + try stdout.writeAll(input[0..len]); + } +} |