This documentation is available as Markdown for AI agents and LLMs. See the full Markdown index or append .md to any documentation URL.
Expo Crypto
A universal library for crypto operations.
expo-crypto enables you to hash data in an equivalent manner to the Node.js core crypto API.
Installation
If you are installing this in an existing React Native app, make sure to install expo in your project.
Usage
API
import * as Crypto from 'expo-crypto';
Methods
The digest() method of Crypto generates a digest of the supplied TypedArray of bytes data with the provided digest algorithm.
A digest is a short fixed-length value derived from some variable-length input. Cryptographic digests should exhibit collision-resistance,
meaning that it's very difficult to generate multiple inputs that have equal digest values.
On web, this method can only be called from a secure origin (HTTPS) otherwise, an error will be thrown.
Promise<ArrayBuffer>A Promise which fulfills with an ArrayBuffer representing the hashed input.
Example
const array = new Uint8Array([1, 2, 3, 4, 5]); const digest = await Crypto.digest(Crypto.CryptoDigestAlgorithm.SHA512, array); console.log('Your digest: ' + digest);
The digestStringAsync() method of Crypto generates a digest of the supplied data string with the provided digest algorithm.
A digest is a short fixed-length value derived from some variable-length input. Cryptographic digests should exhibit collision-resistance,
meaning that it's very difficult to generate multiple inputs that have equal digest values.
You can specify the returned string format as one of CryptoEncoding. By default, the resolved value will be formatted as a HEX string.
On web, this method can only be called from a secure origin (HTTPS) otherwise, an error will be thrown.
Return a Promise which fulfills with a value representing the hashed input.
Example
const digest = await Crypto.digestStringAsync( Crypto.CryptoDigestAlgorithm.SHA512, '🥓 Easy to Digest! 💙' );
Generates completely random bytes using native implementations. The byteCount property
is a number indicating the number of bytes to generate in the form of a Uint8Array.
Falls back to Math.random during development to prevent issues with React Native Debugger.
Uint8ArrayAn array of random bytes with the same length as the byteCount.
Generates completely random bytes using native implementations. The byteCount property
is a number indicating the number of bytes to generate in the form of a Uint8Array.
Promise<Uint8Array>A promise that fulfills with an array of random bytes with the same length as the byteCount.
The getRandomValues() method of Crypto fills a provided TypedArray with cryptographically secure random values.
TThe input array filled with cryptographically secure random values.
Example
const byteArray = new Uint8Array(16); Crypto.getRandomValues(byteArray); console.log('Your lucky bytes: ' + byteArray);
The randomUUID() method returns a unique identifier based on the V4 UUID spec (RFC4122).
It uses cryptographically secure random values to generate the UUID.
stringA string containing a newly generated UUIDv4 identifier
Example
const UUID = Crypto.randomUUID(); console.log('Your UUID: ' + UUID);
Types
Enums
CryptoEncoding.BASE64 = "base64"Has trailing padding. Does not wrap lines. Does not have a trailing newline.