;; -*- Mode: Irken -*-

(include "lib/basis.scm")
(include "lib/map.scm")
(include "lib/codecs/base64.scm")
(include "lib/codecs/hex.scm")

(include "aes.scm")

(define (get-ct)
  (pipe list->string
        generator->list
        b64-dec
        file-char-generator
        (file/open-read "01_07.txt")
        ))

(let ((aes (AES "YELLOW SUBMARINE"))
      (ct (get-ct))
      ((q r) (divmod (string-length ct) 16))
      (blocks '()))
  (for-range i q
    (PUSH blocks (aes.decrypt (substring ct (* 16 i) (* 16 (+ i 1))))))
  (printf (join "" (reverse blocks)) "\n")
  )