Skip to content

Latest commit

 

History

History
116 lines (72 loc) · 3.17 KB

README.md

File metadata and controls

116 lines (72 loc) · 3.17 KB

Monozip 📦🔑

Utility library providing encrypt/compress and decompress/decrypt using AES encryption 🔐.

With a simple API, you can easily zip and encrypt a directory and later unzip and decrypt it.

Features 🚀

  • Generate encryption keys 🔑
  • Encrypt and zip folders 📁➡️🔒📦
  • Unzip and decrypt an encrypted zip folder 📦➡️📂🔓

CLI Usage 💻

Monozip can be used directly from the command line. The general structure of a command is:

monozip [command] [options]

Installation 💾

To use the cli, install globally with npm:

npm install -g monozip

Usage 📖

To encrypt and zip a folder:

You can specify an encryption key and an output path using the -k and --output options respectively. If not specified, a key will be generated automatically, and the output file will be saved in the current directory.

monozip encrypt ./path/to/folder

After running this command, it will print out the encryption key used (keep it safe, you will need it to decrypt 🔐), and the path to the zipped file.

To unzip and decrypt an encrypted zip file:

You need to provide the encryption key and the path to the zipped file. You can also specify an output path using the -o option. If not specified, the file will be unzipped in the current directory.

monozip decrypt your-key ./path/to/file.zip

After running this command, it will print out the path to the unzipped and decrypted files.

Programmatic Usage 💡

Installation 💾

Install the library using npm:

npm install monozip

Encryption and Compression 🔐📦

To encrypt and zip a folder, you can use the generateKey and encryptAndZipFolder functions. Here is an example:

import { generateKey, encryptAndZipFolder } from "monozip";

const folderPath = "downloads/myphotos";

// Generate a new encryption key
const secretKey = generateKey();

// Encrypt and zip the folder
await encryptAndZipFolder(secretKey, fixtureFolderPath);

console.info(`Encrypted with key ${secretKey} and zipped folder ${folderPath}`);
// Encrypted with key e96c9074fa... and zipped folder downloads/myphotos.zip. Keep the key safe!

Decompression and Decryption 📂🔓

To unzip and decrypt a previously encrypted and zipped file, you can use the unzipAndDecryptZip function. Here is an example:

import { generateKey, unzipAndDecryptZip } from "monozip";

// Assume the encryption key is known
const secretKey = "my-secret-key";

// Unzip and decrypt the zipped file
const zipPath = "downloads/myphotos.zip";
const outputPath = await unzipAndDecryptZip(secretKey, zipPath, {
  outputPath: "downloads/myphotos-decrypted",
});

console.info(`Unzipped and decrypted ${outputPath}`);
// Unzipped and decrypted downloads/myphotos-decrypted

Testing 🧪

The project uses Vitest for testing.

You can run the tests with:

npm test

Contributing 🤝

We welcome contributions! Please see here for details on how to contribute.

License 📄

This project is open source, licensed under the MIT License. See LICENSE for details.