anchor.diff:  			     (if parityp 1 0)))))))
       ;; FIXME: if the key is "weak" or "semi-weak" then XOR with #xF0.
       ;; the definitions of weak/semi-weak can be found in the DES specification
  -    (format t "~X~%" key)
  -
  -    (let ((ebc (des-cbc key (make-array (length octets) 
  -					:element-type '(unsigned-byte 8)
  -					:initial-contents octets))))
  -      (format t "~X~%" ebc))
  -
  -    key))
  +;;    (format t "~X~%" key)
  +
  +    (let ((enc (des-cbc key 
  +			(make-array (length octets) 
  +				    :element-type '(unsigned-byte 8)
  +				    :initial-contents octets))))
  +  ;;    (format t "~X~%" (subseq enc (- (length enc) 8)))
  +      (setf key (subseq enc (- (length enc) 8)))
  +      (fix-parity key)
  +      key)))
       
   ;; salt:        "ATHENA.MIT.EDUraeburn"
   ;;                            415448454e412e4d49542e4544557261656275726e
  
positive.code: 	       (ash (logand octet #x20) -4)
  	       (ash (logand octet #x40) -6))))
  
  (defun make-des-key (password salt)
    (let ((octets (concatenate 'list
  			     (babel:string-to-octets password)
  
negative.code:     (let ((length (mod (length octets) 8)))
        (unless (zerop (mod length 8))
  	(setf octets (append octets (make-list (- 8 length) :initial-element 0)))))
      ;;(format t "~X~%" octets)
      ;; remove most significant bit and reverse the bits
      (do ((%octets octets (nthcdr 8 %octets))
  	 (odd t (not odd)))
  