Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Encrypt your data when storing & decrypt when fetching in indexeddb

License

NotificationsYou must be signed in to change notification settings

ujjwalguptaofficial/jsstore-encrypt

Repository files navigation

npm versionTEST

Introduction

Encrypt your data when storing & decrypt when fetching in IndexedDB

It is a jsstore plugin which register amiddleware. The middleware encrypt or decrypt values based on query.

Install

npm i jsstore-encrypt

Examples

https://github.com/ujjwalguptaofficial/jsstore-encrypt/tree/main/examples/

How to use

Setup

1. Define your encrypt decrypt method

importScripts("https://cdnjs.cloudflare.com/ajax/libs/crypto-js/3.1.9-1/crypto-js.min.js")varsecret=CryptoJS.enc.Hex.parse('000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f');varJsStoreEncrypt={encrypt(message){constdata=CryptoJS.AES.encrypt(message,secret,{mode:CryptoJS.mode.ECB}).toString();console.log("data",data);returndata;},decrypt(message){vardecryptedBytes=CryptoJS.AES.decrypt(message,secret,{mode:CryptoJS.mode.ECB});returndecryptedBytes.toString(CryptoJS.enc.Utf8);}}

save this code in a javascript file. Let's say we have saved inside file name -jsstore-encrypt.js

This code will be used to encrypt decrypt the value.jsstore-encrypt search for objectJsStoreEncrypt and then useencrypt,decrypt method, so its important that you follow this pattern.

👉 Important points -

  • Above code uses cryptojs AES algorithm. But you can use any library or algorithm.
  • If your code is asychronous, you can return promise.
  • In order to query usingwhere - the encrypt algorithm should generate the same value always, so that we can encrypt a value and search in stored values.

2. Register plugin

import{encryptPlugin}from"jsstore-encrypt";varconnection=newJsStore.Connection();connection.addPlugin(encryptPlugin,"path to jsstore_encrypt.js");

3. Create db schema & mark columns to encrypt

consttblStudent={name:'Students',columns:{id:{primaryKey:true,autoIncrement:true},name:{notNull:true,dataType:DATA_TYPE.String},secret:{dataType:DATA_TYPE.String,encrypt:true}asany}};constdataBase:IDataBase={name:dbname,tables:[tblStudent]};

In the above schema, columnsecret is marked to be encrypted. So only column secret will be encrypted when inserted or updated & decrypted when selecting.

Insert data

connection.insert({into:"Students",values:[{city:"bangalore",country:"india",gender:"male",name:"ujjwal",secret:"i want to travel the world"}],encrypt:true})

Theencrypt option tells jsstore-encrypt to encrypt the values. Only column marked withecnrypt in the database schema will be encrypted - in our casesecret.

Select data

connection.select({from:"Students",decrypt:true,})

Thedecrypt option tells jsstore-decrypt to decrypt the values. Only column marked withecnrypt will be decrypted - in our casesecret column only.

Update data

connection.update({in:"Students",encrypt:true,set:{name:'Ujjwal Gupta',secret:"Being more human"}})

In case of update,set values are encrypted.

Where (Filter)

In order to filter data usingwhere - the encrypt algorithm should generate the same value always, so that we can encrypt a value and search in stored values.

connection.select({from:"Students",decrypt:{where:{secret:"Being more human"}}})

When you addwhere inside decrypt/encrypt, all values inside where are encrypted.

👉 You can also use your normal field without encrypt option similar to how you were using before -

connection.select({from:"Students",decrypt:{where:{secret:"Being more human"}},where:{id:1}})

Note:- Partial where option -regex,like etc doesn't work in case of encryption as the values are stored as different data.

About

Encrypt your data when storing & decrypt when fetching in indexeddb

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors3

  •  
  •  
  •  

[8]ページ先頭

©2009-2025 Movatter.jp