UNPKG

@ashiteam/ashi-smule

Version:

AES encription/decription library for my use

87 lines (52 loc) 2.42 kB
# AshiTEAM AES A helper class for my use to encrypt/decrypt binary data and string data using a password. ### Installing Install using npm ``` npm i @ashiteam/ashi-aes --save ``` The password to use for encryption/decryption can be passed in the constructor or as an optional parameter to the encrypt/decrypt functions. To use, first import, create a variable and use as follows ``` import { AshiAes } from '@ashiteam/ashi-aes'; const aes = new AshiAes('my password'); const data = 'This is a test string to encrypt. This is a test string to encrypt. This is a test string to encrypt. This is a test string to encrypt'; const encData = aes.encryptText(data); const decData = aes.decryptText(encData); console.log(encData); console.log(data); console.log(decData); console.log(decData == data ? 'All good' : 'ERROR'); ``` To encrypt binarry data, use the encryptData & decryptData functions. You can pass in a Buffer and get back a Buffer to and from these functions. ``` const encBinaryData = aes.encryptData(binaryData); const decBinaryData = aes.decryptData(encBinaryData); ``` To pass the password to the functions, do as follows ``` import { AshiAes } from '@ashiteam/ashi-aes'; s const aes = new AshiAes(''); const encData = aes.encryptText(data, 'password to use'); const decData = aes.decryptText(encData, 'password to use'); ``` ## Some Implementation Details The key used for encryption/decryption is a 256 bit key generated using pbkdf2 using a random salt of 16 bytes long using 100 iterations. The 100 iterations is the default, this however can be changed to a different value by setting the iterations property. When encrypting: - The random salt is stored as the firs 16 bytes of the output. - A randome iv of 16 bytes is generated and used and stored as the second 16 bytes of the output. - The encrypted data is stored starting from the 32nd byte When decrypting: - The salt from the first 16 bytes are used to generate the key - The second 16 bytes are used as the initial vector (iv) #### Note **Data encrypted using other tools or languages (such as Java, C#, ...) can be decrypted by this code (and vice versa) provided the salt & iv are stored as the first 32 bytes, and the key is generated as mentiond above.** ## Authors - **Asanga Weerapura** - _All work_ ## License This project is licensed under the ISC License. ## Acknowledgments - node-forge - buffer