All Projects → maxdeviant → Redux Persist Transform Encrypt

maxdeviant / Redux Persist Transform Encrypt

Licence: mit
Encrypt your Redux store

Programming Languages

typescript
32286 projects

Projects that are alternatives of or similar to Redux Persist Transform Encrypt

etesync-notes
An EteSync backed note taking app
Stars: ✭ 64 (-79.08%)
Mutual labels:  encryption
Crypter
Crypter - Python3 based builder and ransomware compiled to Windows executable using PyInstaller
Stars: ✭ 268 (-12.42%)
Mutual labels:  encryption
Chatsecure Ios
ChatSecure is a free and open source encrypted chat client for iOS that supports OTR and OMEMO encryption over XMPP.
Stars: ✭ 3,044 (+894.77%)
Mutual labels:  encryption
Nfreezer
nFreezer is an encrypted-at-rest backup tool.
Stars: ✭ 259 (-15.36%)
Mutual labels:  encryption
Cloaker
Simple, drag-and-drop, password-based file encryption
Stars: ✭ 267 (-12.75%)
Mutual labels:  encryption
Msoffcrypto Tool
Python tool and library for decrypting MS Office files with passwords or other keys
Stars: ✭ 274 (-10.46%)
Mutual labels:  encryption
use-dencrypt-effect
⚛ A custom React hook generating crypting text effect.
Stars: ✭ 39 (-87.25%)
Mutual labels:  encryption
Veracrypt
Disk encryption with strong security based on TrueCrypt
Stars: ✭ 3,674 (+1100.65%)
Mutual labels:  encryption
Xorencryption
XOR encryption implementations for several languages.
Stars: ✭ 266 (-13.07%)
Mutual labels:  encryption
Wire Ios
📱 Wire for iOS (iPhone and iPad)
Stars: ✭ 3,079 (+906.21%)
Mutual labels:  encryption
Wormhole William
End-to-end encrypted file transfer. A magic wormhole CLI and API in Go (golang).
Stars: ✭ 256 (-16.34%)
Mutual labels:  encryption
My Talks
List of my talks and workshops: security engineering, applied cryptography, secure software development
Stars: ✭ 261 (-14.71%)
Mutual labels:  encryption
Portwarden
Create Encrypted Backups of Your Bitwarden Vault with Attachments
Stars: ✭ 274 (-10.46%)
Mutual labels:  encryption
vmecs
A simple VMess proxy implementation written in C.
Stars: ✭ 28 (-90.85%)
Mutual labels:  encryption
Awesome Cryptography
A curated list of cryptography resources and links.
Stars: ✭ 3,475 (+1035.62%)
Mutual labels:  encryption
flame
Flame is an ActionScript library that provides a number of useful UI controls, collections, cryptographic services, and utilities to work with the Flex SDK.
Stars: ✭ 18 (-94.12%)
Mutual labels:  encryption
Bluntly
serverless, encrypted, NAT-breaking p2p connections - DEPRECATED
Stars: ✭ 270 (-11.76%)
Mutual labels:  encryption
Ciphersweet
Fast, searchable field-level encryption for PHP projects
Stars: ✭ 299 (-2.29%)
Mutual labels:  encryption
Aes Rsa Java
AES+RSA结合应用java示例
Stars: ✭ 295 (-3.59%)
Mutual labels:  encryption
Ssh Vault
🌰 encrypt/decrypt using ssh keys
Stars: ✭ 277 (-9.48%)
Mutual labels:  encryption

redux-persist-transform-encrypt

npm Travis

Encrypt your Redux store.

Installation

redux-persist-transform-encrypt must be used in conjunction with redux-persist, so make sure you have that installed as well.

Yarn

yarn add redux-persist-transform-encrypt

npm

npm install redux-persist-transform-encrypt

Usage

Synchronous

import { persistReducer } from 'redux-persist';
import { encryptTransform } from 'redux-persist-transform-encrypt';

const reducer = persistReducer(
  {
    transforms: [
      encryptTransform({
        secretKey: 'my-super-secret-key',
        onError: function (error) {
          // Handle the error.
        },
      }),
    ],
  },
  baseReducer
);

Asynchronous

Asynchronous support was removed in v3.0.0, as it was never fully supported and is not able to be implemented correctly given the current constraints that redux-persist imposes on transforms. See #48 for more details.

Custom Error Handling

The onError property given to the encryptTransform options is an optional function that receives an Error object as its only parameter. This allows custom error handling from the parent application.

Secret Key Selection

The secretKey provided to encryptTransform is used as a passphrase to generate a 256-bit AES key which is then used to encrypt the Redux store.

You SHOULD NOT use a single secret key for all users of your application, as this negates any potential security benefits of encrypting the store in the first place.

You SHOULD NOT hard-code or generate your secret key anywhere on the client, as this risks exposing the key since the JavaScript source is ultimately accessible to the end-user.

If you are only interested in persisting the store over the course of a single session and then invalidating the store, consider using the user's access token or session key as the secret key.

For long-term persistence, you will want to use a unique, deterministic key that is provided by the server. For example, the server could derive a hash from the user's ID and a salt (also stored server-side) and then return that hash to the client to use to decrypt the store. Placing this key retrieval behind authentication would prevent someone from accessing the encrypted store data if they are not authenticated as the user.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].