anchor.diff:  
   (defprofile :des-cbc-md5)
   
  -(defmethod profile-encrypt-data ((type (eql :des-cbc-md5)) octets key &key)
  -  (des-encrypt octets
  -	       (lambda (data)
  -		 (encrypt-des-cbc key data))
  +(defmethod profile-encrypt-data ((type (eql :des-cbc-md5)) octets key &key initialization-vector)
  +  (des-encrypt octets
  +	       (lambda (data)
  +		 (encrypt-des-cbc key data :initialization-vector initialization-vector))
   	       #'md5))
   
  -(defmethod profile-decrypt-data ((type (eql :des-cbc-md5)) octets key &key)
  -  (des-decrypt octets
  -	       (lambda (data)
  -		 (decrypt-des-cbc key data))
  +(defmethod profile-decrypt-data ((type (eql :des-cbc-md5)) octets key &key initialization-vector)
  +  (des-decrypt octets
  +	       (lambda (data)
  +		 (decrypt-des-cbc key data :initialization-vector initialization-vector))
   	       #'md4))
   
   (defmethod string-to-key ((type (eql :des-cbc-md5)) password salt)
  
positive.code: 
  (defmethod string-to-key ((type (eql :rc4)) password salt)
    (rc4-string-to-key password))
  
negative.code: ;; this file is for defining "encryption profiles", as described in the rfc
  ;; this amounts to a set of functions which should be dispatched to depending on
  ;; the encrpyion type
  
  ;; FIXME: add more profiel functions to get other info, e.g. cipher key size, cipher block size etc
  
  (defvar *profiles* nil
    "A list of symbols naming available encryption type profiles.")
  