The SubtleCrypto.encrypt()
method returns a Promise
of the encrypted data corresponding to the plaintext data, algorithm and key given as parameters.
var result = crypto.subtle.encrypt(algorithm, key, data);
algorithm
is an object specifying the encryption function to be used and its parameters; if there are no parameters, algorithm can be a DOMString
with the algorithm name. Supported values¹ are: {"name": "AES-CBC", iv}
where iv
is a 16-byte BufferSource
initialization vector (generated by RandomSource.getRandomValues()
).{"name": "AES-CTR", counter, length} where counter is an initialised 16-byte
BufferSource
counter block, and length is the length (in bits) of the part of the counter block that is incremented.
{"name": "AES-GCM", iv[, additionalData, tagLength]}
where iv
is a BufferSource
initialization vector up to 2⁶⁴−1 bytes long; additionalData
is a BufferSource
authentication data and tagLength
is the length of the authentication tag.{"name": "RSA-OAEP"[, label]} where label is an optional label to associate with the message.
key
is a CryptoKey
containing the key to be used for encryption.data
is a BufferSource
containing the data to be encrypted, the plaintext.result
is a Promise
that returns the ciphertext generated by the encryption of the plaintext as an ArrayBuffer
.The promise is rejected when the following exceptions are encountered:
const encryptText = async (plainText, password) => { const ptUtf8 = new TextEncoder().encode(plainText); const pwUtf8 = new TextEncoder().encode(password); const pwHash = await crypto.subtle.digest('SHA-256', pwUtf8); const iv = crypto.getRandomValues(new Uint8Array(12)); const alg = { name: 'AES-GCM', iv: iv }; const key = await crypto.subtle.importKey('raw', pwHash, alg, false, ['encrypt']); return crypto.subtle.encrypt(alg, key, ptUtf8); }
The password and the iv
will be required for the SubtleCrypto.decrypt()
operation.
Specification | Status | Comment |
---|---|---|
Web Cryptography API The definition of 'SubtleCrypto.encrypt()' in that specification. | Recommendation | Initial definition. |
Feature | Chrome | Edge | Firefox (Gecko) | Internet Explorer | Opera | Safari |
---|---|---|---|---|---|---|
Basic support | 37 | (Yes) | 34 (34) | No support | ? | No support |
Feature | Android | Chrome for Android | Edge | Firefox Mobile (Gecko) | IE Mobile | Opera Mobile | Safari Mobile |
---|---|---|---|---|---|---|---|
Basic support | (Yes) | 37 | (Yes) | 34.0 (34) | No support | ? | No support |
Crypto
and Crypto.subtle
.SubtleCrypto
, the interface it belongs to.
© 2005–2018 Mozilla Developer Network and individual contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/API/SubtleCrypto/encrypt