arcfour という暗号がある。 実質的には擬似乱数生成器で、生成した数列を対象データと xor する仕組みだ。 乱数の種が鍵となるわけである。 この暗号は非常に単純で、短いコードで実装可能という特徴がある。 今回はこの arcfour を Gauche で実装してみようと試みた。 まずは素直に暗号アルゴリズムを書き下したものがこれだ。 (use gauche.uvector) (define-syntax swap! (syntax-rules () ((_ x y) (let1 t x (set! x y) (set! y t))))) (define-class <arcfour> () ((s :init-form (make-u8vector 256)) (x :init-value 0) (y :init-value 0))) (define-method arcfour-k