Surprisingly, for some things, the C version is easier to read than the Lisp one:
(loop
for c1 across "B+p:ubYBGG0,|M3B=1*0N"
for c2 across "it's touring complete"
do (princ (code-char (logxor (- (char-code c1) 10) (char-code c2)))))
;;; or a more lispy
(defun dec-str (s1 s2)
(map 'string #'(lambda (c1 c2)
(code-char (logxor (- (char-code c1) 10)
(char-code c2))))
s1 s2))