krip
Dead simple encryption in both browser and node, using WebCrypto under the hood
Table of contents
Usage
; const SECRET = "MY_SPECIAL_KEY"; const test = async { const encrypted = await ; console; const decrypted = await ; console;}; ;// encrypted: 4439AA90B8374AA440BE3F816ADF0EA3501B61DE699264D5CAD89C381E595DD2337DCD00E7AE33F37A87C38CED// decrypted: my secret value
API
encrypt
encrypt(value: any, secret: any[, options: Object]): string
Encrypt a value
based on the passed secret
and options
. The value
can be any serializable value, as can the secret
(if not a string, under the hood they will be stringified).
const SECRET = some: 'special key'; const result = await ; console;// FD3740F30AEF1B25588C7227+96800272F06DCD73749802EB6FF7052614C876D30ED7398B4579295CE90FC8
options
is an object of the following possible values:
// charset to use when encoding / decoding text charset: string = 'utf-8' // size of the TypedArray used for the crypto iv ivSize: number = 12 // the parser used to deserialize the encrypted value
decrypt
decrypt(encryptedValue: string, secret: any[, options: Object]): string
Decrypt the encryptedValue
based on the passed secret
and options
. The secret
must be equal in value as the one used in the encrypt
method.
const SECRET = some: 'special key'; const encrypted = await ; console;// FD3740F30AEF1B25588C722796800272F06DCD73749802EB6FF7052614C876D30ED7398B4579295CE90FC8 const result = await ; console;// {some: 'data'}
options
is an object of the following possible values:
// charset to use when encoding / decoding text charset: string = 'utf-8' // size of the TypedArray used for the crypto iv ivSize: number = 12 // the parser used to deserialize the encrypted value
generateSecret
generateSecret([options: Object]): CryptoKey
Generate a dynamic secret to use in encrypt
or decrypt
.
const SECRET = await ; console;// CryptoKey {...}
options
is an object of the following possible values:
// the length of the key used when generating a key keyLength: number = 256
hash
hash(value: any[, algorithm: string[, options: Object]]): string
Generate a unique SHA-based one-way hash.
const hashed = await ; console;// 0beec7b5ea3f0fdbc95d0dd47f3c5bc275da8a33
algorithm
is a string of the following possible values:
SHA-1
SHA-256
(default)SHA-384
SHA-512
options
is an object of the following possible values:
// charset to use when encoding / decoding text charset: string = 'utf-8' // the stringifier used to serialize the value to hash
Support
Browser
- Chrome 37+
- Firefox 34+
- Edge (all versions)
- Opera 24+
- IE 11+
- Requires polyfills for
Promise
,TextDecoder
, andTextEncoder
- Requires polyfills for
- Safari 7.1+
- iOS 8+
- Android 5+
NodeJS
- 4+
Development
Standard stuff, clone the repo and npm install
dependencies. The npm scripts available:
build
=> runrollup
to build browser and node versions- standard versions to top-level directory, minified versions to
dist
folder
- standard versions to top-level directory, minified versions to
clean:dist
=> runrimraf
ondist
folderdev
=> runwebpack
dev server to run example app / playgrounddist
=> runclean:dist
,build
lint
=> runeslint
against all files in thesrc
folderlint:fix
=> runlint
, fixing issues when possibleprepublish
=> runsprepublish:compile
when publishingprepublish:compile
=> runlint
,test:coverage
,build
start
=> rundev
test
=> run AVA test functions withNODE_ENV=test
test:coverage
=> runtest
but withnyc
for coverage checkertest:watch
=> runtest
, but with persistent watcher