summaryrefslogtreecommitdiff
path: root/kattis-kth/aes/src
diff options
context:
space:
mode:
Diffstat (limited to 'kattis-kth/aes/src')
-rw-r--r--kattis-kth/aes/src/main.zig22
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]);
+ }
+}