1.2.4 • Published 2 years ago

@dae54/enc v1.2.4

Weekly downloads
-
License
ISC
Repository
github
Last release
2 years ago

General

This is a wrapper to "crypto-js": "^3.3.0" assisting in easy encryption and decryption using AES-256

Installation

npm i @dae54/enc

This will install @dae54/enc

Usage

This package exposes 2 public methods, encrypt and decrypt serving purposes as stating.

  • Start by instantiating the class Enc by providing encryption key
const EncHandler = require('@dae54/enc')
const hashKey = 'some random generated key'
const encHandler = new EncHandler(hashKey)

// Here encHandler will have exposed  2 methods
encHandler.encrypt(payload,fields)
encHandler.decrypt(payload,fields)

Objects

Sample payload

const payload = {
    id: '1',
    price: '80000',
    sales: '900000',
    units: '100'
}

Encryption

Use encrypt(payload,fieldsToEncrypt) instance of encHandler

const fieldsToEncrypt = ['price', 'sales']
const encrypted = encHandler.encrypt(payload,fields)

Output (encrypted)

{
    id: '1',
    price: 'U2FsdGVkX18RYNPLtly/ykEjLOQpgtc3ekGyesTCbOo=',
    sales: 'U2FsdGVkX18KW6tBWBmbsojBiqyKsqWhVVvcBO39c80=',
    units: '100',
}  

Decryption

Use decrypt(payload,fieldsToDecrypt) instance of encHandler

const payload = {
    id: '1',
    price: 'U2FsdGVkX18RYNPLtly/ykEjLOQpgtc3ekGyesTCbOo=',
    sales: 'U2FsdGVkX18KW6tBWBmbsojBiqyKsqWhVVvcBO39c80=',
    units: '100',
}
const fields = ['price', 'sales']
const decrypted = encHandler.decrypt(payload,fields)

Output (decrypted)

{
    id: '1',
    price: '80000',
    sales: '900000',
    units: '100',
}

Nested Objects (1-Level)

Sample payload

const payload = {
    id: '1',
    price: '80000',
    sales: '900000',
    units: '100',
    buyer:{
        name:"test name",
        id:"uu"
    }   
}

Encryption

Use encrypt(payload,fieldsToEncrypt) instance of encHandler, adding the nested objects keys using dot operator. See (buyer.name) below

const fields = ['price', 'sales', 'units','buyer.name']
const encrypted = encHandler.encrypt(payload,fields)

Output (encrypted)

{
    id: '1',
    price: 'U2FsdGVkX18RYNPLtly/ykEjLOQpgtc3ekGyesTCbOo=',
    sales: 'U2FsdGVkX18KW6tBWBmbsojBiqyKsqWhVVvcBO39c80=',
    units: 'U2FsdGVkX19yy5FQJvn3iUOxE7aLi5zmN6Kl06Tvbno=',
    buyer:{
         name:"U2FsdGVkX19yy5FQJvn3iUOxE7ybiidoo933dodC=",
         id:"uu"
    }
}  

Decryption

To Decrypt,an object item, call decrypt(payload,fields) instance of encHandler, taking note of dot operator for nested objects encrypted.

Sample Payload

const payload = {
    id: '1',
    price: 'U2FsdGVkX18RYNPLtly/ykEjLOQpgtc3ekGyesTCbOo=',
    sales: 'U2FsdGVkX18KW6tBWBmbsojBiqyKsqWhVVvcBO39c80=',
    units: 'U2FsdGVkX19yy5FQJvn3iUOxE7aLi5zmN6Kl06Tvbno=',
    buyer:{
        name:"U2FsdGVkX19yy5FQJvn3iUOxE7ybiidoo933dodC=",
        id:"uu"
    }   
}
const fields = ['price', 'sales', 'units','buyer.name']
const decrypted = encHandler.decrypt(payload,fields)

Output (decrypted)

{
    id: '1',
    price: '80000',
    sales: '900000',
    units: '100',
    buyer:{
        name:"test name",
        id:"uu"
    } 
}

Nested Objects Level - 2 and more

Not supported

Arrays

Sample Payload

const payload = {
    id: '1',
    price: '90000',
    products: [
        {
            id: '1',
            price: '80000',
            sales: '800000',
        },
        {
            id: '2',
            price: '180000.998',
            sales: '800005.2',
        },
    ]
}

Encryption

Use encrypt(payload,fieldsToEncrypt,arrayFieldsToEncrypt) instance of encHandler.

const fields = ['price']
const arrayFieldsToEncrypt = ['products:[id,price]']
const encrypted = encHandler.encrypt(payload,fields,arrayFieldsToEncrypt)

Output (Encrypted)

const payload = {
    id:'1'
    price: 'U2FsdGVkX1+tmXBzY8KnpdEbZhD6U7s+MVLqdOyEl+U=',
    products: [
        {
            id: 'U2FsdGVkX1+RCt+erbceDwRVmfz18eKns74swXjH+ww=',
            price: 'U2FsdGVkX1864K0TmWXa3lOe49AQW61jd2d7nMLx3q8=',
            sales: '800000'
        },
        {
            id: 'U2FsdGVkX19lgyE/UG2QHollWHKM1VT2NCCLnTBD454=',
            price: 'U2FsdGVkX19AXOsKSW+ulmM/sBG9JgvvPufwdwhVqn4=',
            sales: '800005.2'
        }
    ]
}

Decryption

To Decrypt,an object item, call decrypt(payload,fields,fieldsToDecrypt) instance of encHandler. Sample Payload

{
    id:'1'
    price: 'U2FsdGVkX1+tmXBzY8KnpdEbZhD6U7s+MVLqdOyEl+U=',
    products: [
        {
            id: 'U2FsdGVkX1+RCt+erbceDwRVmfz18eKns74swXjH+ww=',
            price: 'U2FsdGVkX1864K0TmWXa3lOe49AQW61jd2d7nMLx3q8=',
            sales: '800000'
        },
        {
            id: 'U2FsdGVkX19lgyE/UG2QHollWHKM1VT2NCCLnTBD454=',
            price: 'U2FsdGVkX19AXOsKSW+ulmM/sBG9JgvvPufwdwhVqn4=',
            sales: '800005.2'
        }
    ]
}


const fields = ['price']
const arrayFieldsToDecrypt = ['products:[id,price]']
const decrypted = encHandler.decrypt(payload,fields,arrayFieldsToDecrypt)

Output

const payload = {
    id: '1',
    price: '90000',
    products: [
        {
            id: '1',
            price: '80000',
            sales: '800000',
        },
        {
            id: '2',
            price: '180000.998',
            sales: '800005.2',
        },
    ]
}

Dependencies

This package depends on:

  • "crypto-js": "3.3.0"

So It should work with NodeJs, React Native and ReactJS.

1.1.1

2 years ago

1.1.0

2 years ago

1.2.4

2 years ago

1.2.3

2 years ago

1.2.2

2 years ago

1.2.1

2 years ago

1.0.8

2 years ago

1.0.7

2 years ago

1.0.6

2 years ago

1.0.5

2 years ago

1.0.4

2 years ago

1.0.3

2 years ago

1.0.2

2 years ago

1.0.1

2 years ago

1.0.0

2 years ago