Neighbourhood Party Manager

    javascript-blowfish
    TypeScript icon, indicating that this package has built-in type declarations

    1.0.4 • Public • Published

    javascript-blowfish

    Blowfish encryption library Javascript, jquery,coffeescript (blowfish.js)

    Blowfish is block cipher, block length is 8 byte.

    Online DEMO of javascript-blowfish.

    A key advantage of the library is that it works correctly with strings in UTF-8.

    Text data encryption (ASCII/text)

    It you want to encrypt string information (like text-message, or json, xml): use trimZeroes method (see bellow Example 1).

    Example: ECB mode, default

    var bf = new Blowfish("secret key");
    var encrypted = bf.encrypt("secret message");
    var decrypted = bf.decrypt(encrypted);
    decrypted = bf.trimZeroes(decrypted); // for string/text information 
    console.log(decrypted);

    Binary data encryption

    If you want to encrypt binary data you must provide encrypt function with string length multiple by 8.

    Example:

    Input string for encryption: "asdf" (4 bytes) is not enough. Blowfish want 8-byte string (or 16, 24, 32,...)

    So my lib automaticaly pad string with zeros: "asdf\0\0\0\0" If you want to prevent such behaviour you should pad input data to block size.

    Additional info about padding: Using Padding in Encryption (@lucnap) suggested

    After decryption we will get not "asdf", but "asdf\0\0\0\0" string.

    Example 2: CBC mode (better for encrypting long messages and images).

    For CBC you need additional key (CBC Vector) which length should be 8 bytes.

    var bf = new Blowfish("key", "cbc");
    var encrypted = bf.encrypt("secret message", "cbcvecto");
    var decrypted = bf.decrypt(encrypted, "cbcvecto");

    Blowfish when encrypt produces binary string as result. It's not usable for example, to copy paste. We could encode it to base64 text format:

    Example 3: with base64 encoded output

    var bf = new Blowfish("key");
     
    // Encrypt and encode to base64
    var encrypted = bf.base64Encode(bf.encrypt("secret message"));
    console.log(encrypted);
     
    // Decrypt
    var encrypted = bf.base64Decode(encrypted);
    var decrypted = bf.decrypt(encrypted);

    Install

    npm i javascript-blowfish

    DownloadsWeekly Downloads

    190

    Version

    1.0.4

    License

    MIT

    Last publish

    Collaborators

    • thesunlover