expo-crypto
enables you to hash data in an equivalent manner to the Node.js core crypto
API.Android Device | Android Emulator | iOS Device | iOS Simulator | Web |
---|---|---|---|---|
→
expo install expo-crypto
If you're installing this in a bare React Native app, you should also follow these additional installation instructions.
import React, { useEffect } from 'react'; import { StyleSheet, View, Text } from 'react-native'; import * as Crypto from 'expo-crypto'; export default function App() { useEffect(() => { (async () => { const digest = await Crypto.digestStringAsync( Crypto.CryptoDigestAlgorithm.SHA256, 'GitHub stars are neat 🌟' ); console.log('Digest: ', digest); /* Some crypto operation... */ })(); }, []); return ( <View style={styles.container}> <Text>Crypto Module Example</Text> </View> ); } %%placeholder-start%%const styles = StyleSheet.create({ ... }); %%placeholder-end%%const styles = StyleSheet.create({ container: { flex: 1, backgroundColor: '#fff', alignItems: 'center', justifyContent: 'center', }, });
import * as Crypto from 'expo-crypto';
CryptoDigestAlgorithm
) - The cryptographic hash function to use to transform a block of data into a fixed-size output.string
) - The value that will be used to generate a digest.CryptoDigestOptions
) - Format of the digest string. Defaults to: CryptoDigestOptions.HEX
.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.
const digest = await Crypto.digestStringAsync( Crypto.CryptoDigestAlgorithm.SHA512, '🥓 Easy to Digest! 💙' );
Name | Type | Description |
---|---|---|
encoding | CryptoEncoding | Format the digest is returned in. |
string
MD2
- 128
bits.CryptoDigestAlgorithm.MD2 = "MD2"
MD4
- 128
bits.CryptoDigestAlgorithm.MD4 = "MD4"
MD5
- 128
bits.CryptoDigestAlgorithm.MD5 = "MD5"
SHA1
- 160
bits.CryptoDigestAlgorithm.SHA1 = "SHA-1"
SHA256
- 256
bits. Collision Resistant.CryptoDigestAlgorithm.SHA256 = "SHA-256"
SHA384
- 384
bits. Collision Resistant.CryptoDigestAlgorithm.SHA384 = "SHA-384"
SHA512
- 512
bits. Collision Resistant.CryptoDigestAlgorithm.SHA512 = "SHA-512"
BASE64
- Has trailing padding. Does not wrap lines. Does not have a trailing newline.CryptoEncoding.BASE64 = "base64"
HEX
CryptoEncoding.HEX = "hex"
Code | Description |
---|---|
ERR_CRYPTO_UNAVAILABLE | Web Only. Access to the WebCrypto API is restricted to secure origins (https). You can run your web project from a secure origin with expo start --https . |
ERR_CRYPTO_DIGEST | An invalid encoding type provided. |