;; -*- Mode: Irken -*-

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

(define (xor-char ch n)
  (int->char (logxor n (char->int ch))))

(define (xor-repeating s key)
  (let ((slen (string-length s))
        (klen (string-length key))
        (r (copy-string s slen)))
    (for-range i slen
      (string-set! r i
                   (xor-char
                    (string-ref s i)
                    (char->int (string-ref key (mod i klen))))))
    r))

(define pt "Burning 'em, if you ain't quick and nimble\nI go crazy when I hear a cymbal")

(printf (string->hex (xor-repeating pt "ICE")) "\n")