如何用 gnutls-symmetric-encrypt 密码加密?IV(初始向量)如何处理?

我的需求是密码加密一个字符串、buffer、文件,加密和解密使用同一个密码。

;; 函数签名
(gnutls-symmetric-decrypt CIPHER KEY IV INPUT &optional AEAD-AUTH)

;; 加密
(setq x (gnutls-symmetric-encrypt
         'RC2-40 "keyyy" "12345678" "valueeee"))
;; => ("\311\313\356\325]\317Y" "12345678")

;; 解密
(gnutls-symmetric-decrypt
 'RC2-40 "keyyy" (cadr x) (car x))
;; => ("valueeee" "12345678")

这个 IV 是应该随机生成,然后跟密码一块告诉解密方?

而且 KEY IV INPUT 的大小都是有 CIPHER 固定了,特别是 INPUT 必须是 8 的整数倍,不是整数倍怎么处理?