crypto.createDecipheriv(algorithm, key, iv[, options])
algorithm
{string}key
{string | Buffer | TypedArray | DataView | KeyObject}iv
{string | Buffer | TypedArray | DataView | null}options
{Object} [stream.transform
options][]- Returns: {Decipher}
Creates and returns a Decipher
object that uses the given algorithm
, key
and initialization vector (iv
).
The options
argument controls stream behavior and is optional except when a
cipher in CCM or OCB mode is used (e.g. 'aes-128-ccm'
). In that case, the
authTagLength
option is required and specifies the length of the
authentication tag in bytes, see [CCM mode][]. In GCM mode, the authTagLength
option is not required but can be used to restrict accepted authentication tags
to those with the specified length.
The algorithm
is dependent on OpenSSL, examples are 'aes192'
, etc. On
recent OpenSSL releases, openssl list -cipher-algorithms
(openssl list-cipher-algorithms
for older versions of OpenSSL) will
display the available cipher algorithms.
The key
is the raw key used by the algorithm
and iv
is an
[initialization vector][]. Both arguments must be 'utf8'
encoded strings,
[Buffers][buffer
], TypedArray
, or DataView
s. The key
may optionally be
a [KeyObject
][] of type secret
. If the cipher does not need
an initialization vector, iv
may be null
.
Initialization vectors should be unpredictable and unique; ideally, they will be cryptographically random. They do not have to be secret: IVs are typically just added to ciphertext messages unencrypted. It may sound contradictory that something has to be unpredictable and unique, but does not have to be secret; remember that an attacker must not be able to predict ahead of time what a given IV will be.
Feedback
Was this page helpful?
很高兴听到! 请告诉我们,我们如何才能改善.
很遗憾听到这个消息。 请告诉我们,我们如何才能改善.