{"_id":"@codegeekdevs/encrypt-decrypt-file","_rev":"8-8a92823525c1fe7bba88f25d02c584d9","name":"@codegeekdevs/encrypt-decrypt-file","dist-tags":{"latest":"1.0.5"},"versions":{"1.0.1":{"name":"@codegeekdevs/encrypt-decrypt-file","version":"1.0.1","keywords":["encrypt","decrypt","file","encryption","aes-256","gcm","crypto","security","password","scrypt"],"author":{"name":"David Faltermier","email":"david@codegeek.net"},"license":"MIT","_id":"@codegeekdevs/encrypt-decrypt-file@1.0.1","maintainers":[{"name":"codegeekdevs","email":"accounts@codegeek.net"}],"homepage":"https://gitlab.com/codegeek-developers/encrypt-file-node-package#readme","bugs":{"url":"https://gitlab.com/codegeek-developers/encrypt-file-node-package/issues"},"dist":{"shasum":"493113f3fbb8cc3e66b1d6a307e9ba9399ffc8ff","tarball":"https://registry.npmjs.org/@codegeekdevs/encrypt-decrypt-file/-/encrypt-decrypt-file-1.0.1.tgz","fileCount":6,"integrity":"sha512-bERyduQdLbRQybOeoZEN9/LHvWTh4FpQ7ZPLwQn4wHsOSzms/zXnJbScl5/S7sW5e1Qo+vS+aQxzEwIGBzz5oQ==","signatures":[{"sig":"MEUCIQCOZWgwJdp+Xtr3NnJXjkx/g//sRSev0NFwybndD1cDSAIgdYVAkymUDorCADUPfdhFKE31GmqIR2jv5k4gCOPuWWo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":20536},"main":"encrypt-decrypt-file.js","engines":{"node":">=18.0.0"},"gitHead":"a357df6797dc901c58b400395cbf05fae172bef6","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_npmUser":{"name":"codegeekdevs","email":"accounts@codegeek.net"},"repository":{"url":"git+https://gitlab.com/codegeek-developers/encrypt-file-node-package.git","type":"git"},"_npmVersion":"11.6.2","description":"Simple file encryption and decryption using AES-256-GCM with password-based key derivation","directories":{},"_nodeVersion":"24.11.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/encrypt-decrypt-file_1.0.1_1763420139560_0.7122691889850796","host":"s3://npm-registry-packages-npm-production"}},"1.0.2":{"name":"@codegeekdevs/encrypt-decrypt-file","version":"1.0.2","keywords":["encrypt","decrypt","file","encryption","aes-256","gcm","crypto","security","password","scrypt"],"author":{"name":"David Faltermier","email":"david@codegeek.net"},"license":"MIT","_id":"@codegeekdevs/encrypt-decrypt-file@1.0.2","maintainers":[{"name":"codegeekdevs","email":"accounts@codegeek.net"}],"homepage":"https://gitlab.com/codegeek-developers/encrypt-file-node-package#readme","bugs":{"url":"https://gitlab.com/codegeek-developers/encrypt-file-node-package/issues"},"dist":{"shasum":"6114d6723ff9526f7af4b17515a12392006d99ba","tarball":"https://registry.npmjs.org/@codegeekdevs/encrypt-decrypt-file/-/encrypt-decrypt-file-1.0.2.tgz","fileCount":6,"integrity":"sha512-9cbihkdQuvO0xeB541Ibpxuy+HbHyd9vXmPSXYGMR0CC9gnggK5xKd1TzpI5cLxRsFhVAe61j5vM46+EpiDVeA==","signatures":[{"sig":"MEUCIQDeblny2Zrnr466HAoL/EJjSRMDePw4ORuZA7kzteT/RwIgWa7Kegpi5kiPPjM4512xv78G3MWypxE1QiiSK5TesbI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":20459},"main":"encrypt-decrypt-file.js","engines":{"node":">=18.0.0"},"gitHead":"9996851f0b5adbfbe60922e42e286d575e15dbfb","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_npmUser":{"name":"codegeekdevs","email":"accounts@codegeek.net"},"repository":{"url":"git+https://gitlab.com/codegeek-developers/encrypt-file-node-package.git","type":"git"},"_npmVersion":"11.6.2","description":"Simple file encryption and decryption using AES-256-GCM with password-based key derivation","directories":{},"_nodeVersion":"24.11.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/encrypt-decrypt-file_1.0.2_1763421690463_0.9569731751151695","host":"s3://npm-registry-packages-npm-production"}},"1.0.3":{"name":"@codegeekdevs/encrypt-decrypt-file","version":"1.0.3","keywords":["encrypt","decrypt","file","encryption","aes-256","gcm","crypto","security","password","scrypt"],"author":{"name":"David Faltermier","email":"david@codegeek.net"},"license":"MIT","_id":"@codegeekdevs/encrypt-decrypt-file@1.0.3","maintainers":[{"name":"codegeekdevs","email":"accounts@codegeek.net"}],"homepage":"https://gitlab.com/codegeek-developers/encrypt-file-node-package#readme","bugs":{"url":"https://gitlab.com/codegeek-developers/encrypt-file-node-package/issues"},"dist":{"shasum":"fe3aba7b7478b9274b41015a1d2d0b9dacee0d35","tarball":"https://registry.npmjs.org/@codegeekdevs/encrypt-decrypt-file/-/encrypt-decrypt-file-1.0.3.tgz","fileCount":6,"integrity":"sha512-FCDiJxmPbSLbi7qcXiVkISXtVtHLpjq75ndCWAKUabRR9KUwfYSD0yyOA4W5A1Zcjqq2/Ihhy4EVXhp2zaCbPQ==","signatures":[{"sig":"MEYCIQD6u6HuJ/jiCeskBf1mc7Z7FrAM5GCEsv7Jcuy8drdaxgIhAOJq510sUanZHaarAtC5mDEDWAisS8u6wCUdYMaDRre8","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":20521},"main":"encrypt-decrypt-file.js","engines":{"node":">=18.0.0"},"gitHead":"69b7daad4c19fa9dee7a11fcc110890b6a2d5b1a","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_npmUser":{"name":"codegeekdevs","email":"accounts@codegeek.net"},"repository":{"url":"git+https://gitlab.com/codegeek-developers/encrypt-file-node-package.git","type":"git"},"_npmVersion":"11.6.2","description":"Simple file encryption and decryption using AES-256-GCM with password-based key derivation","directories":{},"_nodeVersion":"24.11.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/encrypt-decrypt-file_1.0.3_1763421941146_0.6224996078625016","host":"s3://npm-registry-packages-npm-production"}},"1.0.4":{"name":"@codegeekdevs/encrypt-decrypt-file","version":"1.0.4","keywords":["encrypt","decrypt","file","encryption","aes-256","gcm","crypto","security","password","scrypt"],"author":{"name":"David Faltermier","email":"david@codegeek.net"},"license":"MIT","_id":"@codegeekdevs/encrypt-decrypt-file@1.0.4","maintainers":[{"name":"codegeekdevs","email":"accounts@codegeek.net"}],"homepage":"https://gitlab.com/codegeek-developers/encrypt-file-node-package#readme","bugs":{"url":"https://gitlab.com/codegeek-developers/encrypt-file-node-package/issues"},"bin":{"decrypt-file":"encrypt-decrypt-file.js","encrypt-file":"encrypt-decrypt-file.js"},"dist":{"shasum":"0bec86c986c2c7fac22691c94399a58613170ebd","tarball":"https://registry.npmjs.org/@codegeekdevs/encrypt-decrypt-file/-/encrypt-decrypt-file-1.0.4.tgz","fileCount":6,"integrity":"sha512-M4bzBkNAY49wczhspbOwZwHVQ2/dqzBw74G2OG8vG13Vt/jrY5B75AABesQW93bsYOH9GwKPfQWJTwWkPUsuow==","signatures":[{"sig":"MEQCIHOT5ii+uQ03GABacgG7oLDntwpQZSEZ9daTz8DKdlbIAiA3bsziJNGSIH/q2dWvtX2kNcxd7NrUhWhVlGDsMERH9A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":20747},"main":"encrypt-decrypt-file.js","engines":{"node":">=18.0.0"},"gitHead":"e872f752c9b15c799e6d5e160562573c4dbdf7fc","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_npmUser":{"name":"codegeekdevs","email":"accounts@codegeek.net"},"repository":{"url":"git+https://gitlab.com/codegeek-developers/encrypt-file-node-package.git","type":"git"},"_npmVersion":"11.6.2","description":"Simple file encryption and decryption using AES-256-GCM with password-based key derivation","directories":{},"_nodeVersion":"24.11.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/encrypt-decrypt-file_1.0.4_1763676207648_0.974502536795181","host":"s3://npm-registry-packages-npm-production"}},"1.0.5":{"name":"@codegeekdevs/encrypt-decrypt-file","version":"1.0.5","description":"Simple file encryption and decryption using AES-256-GCM with password-based key derivation","main":"encrypt-decrypt-file.js","bin":{"encrypt-file":"encrypt-decrypt-file.js","decrypt-file":"encrypt-decrypt-file.js"},"scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"keywords":["encrypt","decrypt","file","encryption","aes-256","gcm","crypto","security","password","scrypt"],"author":{"name":"David Faltermier","email":"david@codegeek.net"},"license":"MIT","repository":{"type":"git","url":"git+https://gitlab.com/codegeek-developers/node-package-encrypt-decrypt-file.git"},"bugs":{"url":"https://gitlab.com/codegeek-developers/node-package-encrypt-decrypt-file/issues"},"homepage":"https://gitlab.com/codegeek-developers/node-package-encrypt-decrypt-file#readme","engines":{"node":">=18.0.0"},"publishConfig":{"access":"public"},"gitHead":"0393e4722815d4193c130c83ef3f581b0116a19b","_id":"@codegeekdevs/encrypt-decrypt-file@1.0.5","_nodeVersion":"24.11.1","_npmVersion":"11.6.2","dist":{"integrity":"sha512-5Uv3WSzElFYMlNnSUsq5n7WR+Lu15hUm0H+M9ILKlZPG8fksm7K0XruyfxLHF+KHT+Ty6S651D6JPgK8THJgEA==","shasum":"08c996ff2950fc7f39d7a65aba83a570321ada90","tarball":"https://registry.npmjs.org/@codegeekdevs/encrypt-decrypt-file/-/encrypt-decrypt-file-1.0.5.tgz","fileCount":5,"unpackedSize":14341,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQCpFLT1y+HDYcn3JK2U0R/OUdnC+WZQRlIJ1mXCw3XvwQIhAJc98CTGIORgKisWVc6lm38lqTd4+rwlvB/yW6VKcu1M"}]},"_npmUser":{"name":"codegeekdevs","email":"accounts@codegeek.net"},"directories":{},"maintainers":[{"name":"codegeekdevs","email":"accounts@codegeek.net"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/encrypt-decrypt-file_1.0.5_1763757684356_0.9092414796271437"},"_hasShrinkwrap":false}},"time":{"created":"2025-11-17T22:55:39.397Z","modified":"2025-11-21T20:41:24.714Z","1.0.0":"2025-11-17T22:27:02.657Z","1.0.1":"2025-11-17T22:55:39.793Z","1.0.2":"2025-11-17T23:21:30.661Z","1.0.3":"2025-11-17T23:25:41.332Z","1.0.4":"2025-11-20T22:03:27.905Z","1.0.5":"2025-11-21T20:41:24.535Z"},"bugs":{"url":"https://gitlab.com/codegeek-developers/node-package-encrypt-decrypt-file/issues"},"author":{"name":"David Faltermier","email":"david@codegeek.net"},"license":"MIT","homepage":"https://gitlab.com/codegeek-developers/node-package-encrypt-decrypt-file#readme","keywords":["encrypt","decrypt","file","encryption","aes-256","gcm","crypto","security","password","scrypt"],"repository":{"type":"git","url":"git+https://gitlab.com/codegeek-developers/node-package-encrypt-decrypt-file.git"},"description":"Simple file encryption and decryption using AES-256-GCM with password-based key derivation","maintainers":[{"name":"codegeekdevs","email":"accounts@codegeek.net"}],"readme":"# encrypt-decrypt-file\n\nSimple file encryption and decryption using AES-256-GCM with password-based key derivation (scrypt).\n\n## Features\n\n- **Strong Encryption**: Uses AES-256-GCM for authenticated encryption\n- **Secure Key Derivation**: Implements scrypt for password-based key derivation\n- **Simple API**: Easy-to-use functions for encrypting and decrypting files\n- **CLI Support**: Can be used as a command-line tool\n- **Node.js Native**: Built with Node.js crypto module (Node 18+)\n\n## Installation\n\n```bash\nnpm install @codegeekdevs/encrypt-decrypt-file\n```\n\n## Usage\n\n### As a Module\n\n```javascript\nconst { encryptFile, decryptFile } = require('encrypt-decrypt-file');\n\n// Encrypt a file\nencryptFile('./myfile.txt', 'my-secret-password', './myfile.txt.enc');\n\n// Decrypt a file\ndecryptFile('./myfile.txt.enc', 'my-secret-password', './myfile-decrypted.txt');\n```\n\n### As a CLI Tool\n\n```bash\n# Encrypt a file\nnode encrypt-decrypt-file.js encrypt ./myfile.txt \"my-secret-password\"\n\n# Decrypt a file\nnode encrypt-decrypt-file.js decrypt ./myfile.txt.enc \"my-secret-password\"\n\n# Specify custom output path\nnode encrypt-decrypt-file.js encrypt ./myfile.txt \"my-secret-password\" ./custom-output.enc\n```\n\n## API\n\n### `encryptFile(inputPath, password, outputPath)`\n\nEncrypts a file using AES-256-GCM.\n\n**Parameters:**\n- `inputPath` (string): Path to the file to encrypt\n- `password` (string): Password for encryption\n- `outputPath` (string, optional): Output path for encrypted file. Defaults to `${inputPath}.enc`\n\n**Returns:** String - Path to the encrypted file\n\n**Example:**\n```javascript\nconst outputPath = encryptFile('./document.pdf', 'super-secret-password');\nconsole.log(`File encrypted at: ${outputPath}`);\n```\n\n### `decryptFile(inputPath, password, outputPath)`\n\nDecrypts a file that was encrypted with `encryptFile`.\n\n**Parameters:**\n- `inputPath` (string): Path to the encrypted file\n- `password` (string): Password used for encryption\n- `outputPath` (string, optional): Output path for decrypted file. Auto-generated if not provided\n\n**Returns:** String - Path to the decrypted file\n\n**Example:**\n```javascript\nconst outputPath = decryptFile('./document.pdf.enc', 'super-secret-password');\nconsole.log(`File decrypted at: ${outputPath}`);\n```\n\n## Technical Details\n\n### Encryption Algorithm\n- **Algorithm**: AES-256-GCM (Galois/Counter Mode)\n- **Key Length**: 256 bits (32 bytes)\n- **IV Length**: 96 bits (12 bytes)\n- **Auth Tag**: 128 bits (16 bytes)\n\n### Key Derivation\n- **Function**: scrypt\n- **Parameters**:\n  - N: 16384\n  - r: 8\n  - p: 1\n  - Salt: 128 bits (16 bytes, randomly generated)\n\n### File Format\nEncrypted files have the following structure:\n```\n[ \"ENC1\" (4 bytes) | SALT (16 bytes) | IV (12 bytes) | CIPHERTEXT | AUTH TAG (16 bytes) ]\n```\n\nThe \"ENC1\" magic bytes allow for format versioning.\n\n## Requirements\n\n- Node.js 18.0.0 or higher\n\n## Security Considerations\n\n- Always use strong, unique passwords\n- Keep your passwords secure and never commit them to version control\n- The security of the encrypted data depends entirely on the strength of your password\n- Use environment variables or secure vaults for password management in production\n\n## License\n\nMIT\n\n## Contributing\n\nIssues and pull requests are welcome!\n\n## Author\n\nDavid Faltermier, [CodeGeek](https://codegeek.net)\n","readmeFilename":"README.md"}