Skip to content

lachu97/react-native-securekv

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

37 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

📦 react-native-securekv

Light-Weight Secure key-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.


🎥 Demo

Here’s how it works (encrypt → decrypt → verify) 👇

SecureKV Demo

  • Check the Github Repo Click here

✨ 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

# with npm
npm install react-native-securekv

# with yarn
yarn add react-native-securekv

📦 Peer dependencies

# 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

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);
}

🔑 API

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.

📌 Notes

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

📜 License

MIT © 2025

Future & Support

  • 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

About

Light Weight Secure Key-Value Storage for React Native Apps using CryptoGraphy

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors