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.
- Generate encryption keys 🔑
- Encrypt and zip folders 📁➡️🔒📦
- Unzip and decrypt an encrypted zip folder 📦➡️📂🔓
Monozip can be used directly from the command line. The general structure of a command is:
monozip [command] [options]
To use the cli, install globally with npm:
npm install -g monozip
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.
Install the library using npm:
npm install monozip
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!
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
The project uses Vitest for testing.
You can run the tests with:
npm test
We welcome contributions! Please see here for details on how to contribute.
This project is open source, licensed under the MIT License. See LICENSE for details.