k9crypt
Version:
A special encryption algorithm created for K9Crypt.
136 lines (100 loc) • 3.19 kB
Markdown

# K9Crypt Algorithm
This is a special encryption algorithm created for K9Crypt.
## Updates
**v1.1.8**
- Added `encryptFile()` and `decryptFile()` methods for large file encryption with progress tracking
- Added `encryptMany()` and `decryptMany()` methods for batch operations with sequential and parallel processing
- Introduced compression level control (0-9) for flexible speed/size balance
- All method names simplified for better user experience
- Parallel processing support for high-volume data operations
## Installation
```bash
bun add k9crypt
# npm install k9crypt
# pnpm add k9crypt
# yarn add k9crypt
```
## Usage
### Basic Usage
```javascript
const k9crypt = require('k9crypt');
async function test() {
const secretKey = 'VeryLongSecretKey!@#1234567890';
const encryptor = new k9crypt(secretKey);
// Or you can use it without providing a secretKey value. A key will be generated by the system.
// const encryptor = new k9crypt();
const plaintext = 'Hello, World!';
try {
const encrypted = await encryptor.encrypt(plaintext);
console.log('Encrypted data:', encrypted);
const decrypted = await encryptor.decrypt(encrypted);
console.log('Decrypted data:', decrypted);
} catch (error) {
console.error('Encryption error:', error);
}
}
test();
```
### Advanced Features
#### Compression Level Control
```javascript
const encryptor = new k9crypt(secretKey, { compressionLevel: 5 });
const encrypted = await encryptor.encrypt(plaintext, { compressionLevel: 7 });
```
#### File Encryption with Progress Tracking
```javascript
async function encryptBigFile() {
const largeData = 'Very large data...';
const encrypted = await encryptor.encryptFile(largeData, {
compressionLevel: 6,
onProgress: (progress) => {
console.log(`Processed: ${progress.processedBytes} bytes`);
}
});
const decrypted = await encryptor.decryptFile(encrypted, {
onProgress: (progress) => {
console.log(`Decrypted: ${progress.processedBytes} bytes`);
}
});
return decrypted;
}
```
#### Multiple Data Encryption
```javascript
async function encryptMultipleData() {
const dataArray = ['data1', 'data2', 'data3', 'data4'];
const encrypted = await encryptor.encryptMany(dataArray, {
compressionLevel: 5,
onProgress: (progress) => {
console.log(`Progress: ${progress.percentage}% (${progress.current}/${progress.total})`);
}
});
const decrypted = await encryptor.decryptMany(encrypted, {
skipInvalid: true,
onProgress: (progress) => {
console.log(`Progress: ${progress.percentage}%`);
}
});
return decrypted;
}
```
#### Parallel Processing
```javascript
async function encryptManyDataFast() {
const dataArray = Array(100).fill('sample data');
const encrypted = await encryptor.encryptMany(dataArray, {
parallel: true,
batchSize: 20,
compressionLevel: 4
});
const decrypted = await encryptor.decryptMany(encrypted, {
parallel: true,
batchSize: 20,
skipInvalid: false
});
return decrypted;
}
```
## License
This project is licensed under the MIT license.