react-native-securekv
Version:
Light-Weight Secure key-value storage for React Native (AES + SHA Hashing + AES-GCM)
129 lines (78 loc) β’ 3.27 kB
Markdown
value storage for React Native apps**
Built on **PBKDF2-SHA256** key derivation and **AES-256-GCM** encryption
Unlike `AsyncStorage`, all values are encrypted and can only be decrypted with the correct passphrase.
If the passphrase is lost, the data is unrecoverable.
---
Hereβs how it works (encrypt β decrypt β verify) π

- Check the Github Repo 
## β¨ Features
- π Strong PBKDF2-SHA256 key derivation (configurable iterations, salt).
- π AES-256-GCM encryption with authentication (detects tampering).
- π« Passphrase required for both encryption and decryption β no accidental leaks.
- π§Ή Utilities to remove or clear stored items.
- β
Passphrase verification helper.
- β‘ Drop-in for React Native apps (iOS + Android).
- Useful for Banking and other Crypto Apps that wanna prioritize security.
---
## π¦ Installation
```sh
# with npm
npm install react-native-securekv
# with yarn
yarn add react-native-securekv
```
## π¦ Peer dependencies
```shell
# with npm
# required peer deps
npm install react-native-get-random-values @react-native-async-storage/async-storage react-native-simple-crypto
# with yarn
# required peer deps
yarn add react-native-get-random-values @react-native-async-storage/async-storage react-native-simple-crypto
```
## π Usage
```javascript
import SecureKV from "react-native-securekv";
async function demo() {
const passphrase = "myStrongPassword123"; // ideally from secure storage/env
// Save a value securely
await SecureKV.setItem("userToken", "abc123", passphrase);
// Retrieve the value (will decrypt using passphrase)
const value = await SecureKV.getItem("userToken", passphrase);
console.log("Decrypted value:", value);
// Remove a value
await SecureKV.removeItem("userToken");
// Clear all values (β οΈ irreversible)
await SecureKV.clear();
// Verify passphrase correctness
await SecureKV.createVerifyBlob(passphrase); // call once to set verification value
const ok = await SecureKV.verify(passphrase);
console.log("Password match?", ok);
}
```
`setItem(key, value, passphrase, options?)`
Encrypts value using passphrase and stores it in SecureKV.
`getItem(key, passphrase)`
Retrieves and decrypts the value. Returns null if the key does not exist.
`removeItem(key)`
Removes a stored item.
`clear()`
Clears all stored secure items.
`createVerifyBlob(passphrase)`
Stores a hidden encrypted βokβ marker for passphrase validation.
`verify(passphrase)`
Checks if a stored item can be decrypted with the given passphrase.
1.Always store passphrases securely. If the wrong passphrase is provided, decryption will fail.
2.This library is designed for React Native only.
3.AES-GCM provides both encryption and integrity protection.
4.Supports Typescript
MIT Β© 2025
- Anyone would like to contribute to this repo, Kindly ping me or send an email with your github ID to this mail: stellarworks03@gmail.com
- If you find this repo useful give a star on github
**Light-Weight Secure key-