Newly Paranoid Maintainers

    encrypt-string
    TypeScript icon, indicating that this package has built-in type declarations

    1.0.0 • Public • Published

    encrypt-string Build Status

    Encrypt and decrypt a string using another string (or an Uint8Array) as password

    Highlights

    • Simple to use, hard to misuse
    • Does not reinvent the wheel (based on encrypt-uint8array which in turn is based on Themis)
    • Written in TypeScript (you get autocomplete suggestions in your IDE!)
    • The obtained encrypted string is always printable (uses only printable ASCII characters)
    • For large strings, the encrypted string length is only about 25% larger than the original string

    Install

    $ npm install encrypt-string
    

    Usage

    const { encryptString, decryptString } = require('encrypt-string');
    
    (async () => {
    	const secret = 'This is the secret';
    	const password = 'P4s$w0Rd!';
    
    	const encrypted = await encryptString(secret, password);
    	console.log(encrypted);
    	//=> !!(AP#M4i]$9<c0,iw4;%a4/C%*@EB0jp'+$$pww]yLPd3[G'2/eS`@_u/[@.dfF#$9]Xl2:o:@FkoOA'@jq}=`f$W!>gbX1L678@ghM`.=7V(K:db]M5i{u5[ga~CojWx'M_e7;#~lD-aVDs-D_o)+e16d:-`Dz!bVJ3
    
    	const decrypted = await decryptString(encrypted, password);
    	console.log(decrypted);
    	//=> 'This is the secret'
    
    	await decryptString(encrypted, 'wrong-password');
    	//=> DecryptionError: Unable to decrypt - password is incorrect or data is corrupted.
    })();

    Note: it seems Themis uses some cryptographically secure random bytes in the encryption process, therefore the encryption result is different on each run, even for the same secret and same password. If you run the example above, you will probably get a different encrypted string.

    Don't worry, all of them are valid and all of them can be decrypted successfully. You can see this by decrypting the output I received directly:

    const { decryptString } = require('encrypt-string');
    
    (async () => {
    	const encrypted = '!!(AP#M4i]$9<c0,iw4;%a4/C%*@EB0jp\'+$$pww]yLPd3[G\'2/eS`@_u/[@.dfF#$9]Xl2:o:@FkoOA\'@jq}=`f$W!>gbX1L678@ghM`.=7V(K:db]M5i{u5[ga~CojWx\'M_e7;#~lD-aVDs-D_o)+e16d:-`Dz!bVJ3';
    	const password = 'P4s$w0Rd!';
    
    	const decrypted = await decryptString(encrypted, password);
    	console.log(decrypted);
    	//=> 'This is the secret'
    })();

    API

    encryptString(data, password)

    Async function that encrypts data with password. Returns an encrypted string, composed only of printable ASCII characters. More precisely, it uses all 94 printable ASCII characters (excluding space).

    The output can be different for multiple executions with the same parameters, but all of them will be valid (and they will always have at least the same length).

    data

    Type: string

    The string to be encrypted.

    password

    Type: string | Uint8Array

    The string (or Uint8Array) to be used as password.

    decryptString(encryptedData, password)

    Async function that decrypts encryptedData with password. Returns the original string.

    If encryptedData is not valid or the password is incorrect, this function will throw a DecryptionError.

    encryptedData

    Type: string

    The data to be decrypted.

    password

    Type: string | Uint8Array

    The string (or Uint8Array) to be used as password.

    Encrypted length

    When you encrypt a string, the length of the encrypted result will be equal to 125% of the original length, plus 140 characters.

    Related packages

    • encrypt-uint8array - Encrypt and decrypt an Uint8Array using another Uint8Array as password

    License

    MIT © Pedro Augusto de Paula Barbosa

    Install

    npm i encrypt-string

    DownloadsWeekly Downloads

    14

    Version

    1.0.0

    License

    MIT

    Unpacked Size

    17.2 kB

    Total Files

    15

    Last publish

    Collaborators

    • papb