Skip to content

πŸ” Utility library and CLI to encrypt/compress and decompress/decrypt zip folders using AES encryption

License

Notifications You must be signed in to change notification settings

matschik/monozip

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

17 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

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.

About

πŸ” Utility library and CLI to encrypt/compress and decompress/decrypt zip folders using AES encryption

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published