;; -*- 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")