(define crypt-des-extended-default-rounds (make-parameter 1000)) (define (24bit-number->string n) (string (int->a64 n) (int->a64 (arithmetic-shift n -6)) (int->a64 (arithmetic-shift n -12)) (int->a64 (arithmetic-shift n -18)))) (define (crypt-des-extended-gensalt random #!key rounds) (let ((rounds (or rounds (crypt-des-extended-default-rounds))) (v (get-random-u8vector 'crypt-des-extended-gensalt random 3 3))) (string-append "_" (24bit-number->string rounds) (u8vector->saltstring v))))