• algorithm {string}
    • key {string | Buffer | TypedArray | DataView | KeyObject}
    • iv {string | Buffer | TypedArray | DataView | null}
    • options {Object} [stream.transform 的选项][stream.transform options]。
    • 返回: {Decipher}

    使用给定的 algorithmkey 和初始化向量(iv)创建并返回一个 Decipher 对象。

    options 参数控制流的行为,它是可选的,除非使用 CCM 或 OCB 模式的密码(例如 'aes-128-ccm')。 在这种情况下,必须使用 authTagLength 选项,并以字节为单位指定身份验证标签的长度,参见 [CCM 模式][CCM mode]。 在 GCM 模式中,不需要 authTagLength 选项,但可用于将接受的身份验证标签限制为具有指定的长度。

    algorithm 取决于 OpenSSL,例如 'aes192' 等。 在 OpenSSL 的最新版本中,openssl list -cipher-algorithms(在较旧版本的 OpenSSL 中是 openssl list-cipher-algorithms)将会显示可用的密码算法。

    keyalgorithm 使用的原始密钥,iv 是[初始化向量][initialization vector]。 两个参数都必须是 'utf8' 编码的字符串、[Buffer][Buffer]、TypedArrayDataViewkey 可以是 secret 类型的 [KeyObject]。 如果密码不需要初始化向量,则 iv 可以为 null

    初始化向量应该是不可预测的且唯一的,理想情况下,它们在密码上是随机的。 它们不必是私密的:IV 通常只是添加到未加密的密文消息中。 它们必须是不可预测的且唯一的,但不一定是私密的,这听起来似乎是矛盾的。 记住,攻击者必须无法提前预测给定的 IV 将会是什么。