Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/mrdcvlsc/bethela
A CLI tool for file encryption and decryption.
https://github.com/mrdcvlsc/bethela
aes-128 aes-192 aes-256 aes128 aes192 aes256 cbc cfb command-line-tool cryptography decryption encryption file file-cryptography file-encryption information-security key security sensitive-data terminal
Last synced: 29 days ago
JSON representation
A CLI tool for file encryption and decryption.
- Host: GitHub
- URL: https://github.com/mrdcvlsc/bethela
- Owner: mrdcvlsc
- License: mit
- Created: 2021-11-02T14:01:46.000Z (about 3 years ago)
- Default Branch: main
- Last Pushed: 2023-09-23T07:09:17.000Z (about 1 year ago)
- Last Synced: 2024-05-06T12:23:19.653Z (6 months ago)
- Topics: aes-128, aes-192, aes-256, aes128, aes192, aes256, cbc, cfb, command-line-tool, cryptography, decryption, encryption, file, file-cryptography, file-encryption, information-security, key, security, sensitive-data, terminal
- Language: C++
- Homepage:
- Size: 322 KB
- Stars: 4
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# bethela - CLI file cryptography
![Ubuntu](https://github.com/mrdcvlsc/bethela/actions/workflows/test.yml/badge.svg)
A simple terminal command line tool for encryption & decryption of any files, currently supports `Vigenere`, `AES128-CBC`, `AES192-CBC` and `AES256-CBC` ciphers.
The program can also use hardware acceleration technology for AES ciphers using `AES-NI` (Intel and AMD CPUs) and `ARM-neon` (armv8, aarch64 CPUs) intrinsics.
## **Install in Linux**
- Requirement:
- **make**
- **compiler that can compile with or above C++17**1. **Clone** the repo
```
git clone --recurse-submodules https://github.com/mrdcvlsc/bethela
git submodule update --init --recursive
cd bethela
```2. **Compile** the program
Example:
```
make compile CXX=clang++ VERSION=aesni TYPE=release
```This table shows what values you can pass to a dflag
during compilation to alter the compilation behaviour.If a variable flag is not specified, the first value in
the table below are taken as the default values.| Variable | Value |
| ----------- | ----------------------------------- |
| **CXX** | `g++`, `clang++` |
| **TYPE** | `release`, `debug`, `debug_threads` |
| **VERSION** | `portable`, `aesni`, `neon` |
| **LINK** | `dynamic`, `static` |**aesni** - will enable hardware acceleration technology
`AES-NI` when compiling for x86-64 Intel and/or AMD CPUs.**neon** - will enable hardware acceleration technology
in ARM when compiling for ARM armv8/aarch64 CPUs.3. **Install** the program to usr/local/bin (**for linux**)
```
make install
```To **Uninstall** the program in usr/local/bin (**for linux**), use
the command below```
make uninstall
```-----
### **Generate a key file:**
```cmd
bethela --generate key_filename key_size_in_bytes
```The **key size** should be a positive number greater than 0
-----
### **Encrypt/Decrypt with replace**
Adding `-replace` command when encrypting/decrypting will
replace the old files with the encrypted/decrypted files.-----
### **Vigenere Cipher**
Requires any key file sizes.
```
bethela --encrypt-replace keyfile file1 file2 ... fileN
bethela --decrypt-replace keyfile file1.bthl file2.bthl ... fileN.bthl
```-----
### **AES-128**
Requires a 128-bit key, or 16 byte key file size.
```
bethela --enc-AES128-replace keyfile file1 file2 ... fileN
bethela --dec-AES128-replace keyfile file1.bthl file2.bthl ... fileN.bthl
```-----
### **AES-192**
Requires a 192-bit key, or 24 byte key file size.
```
bethela --enc-AES192-replace keyfile file1 file2 ... fileN
bethela --dec-AES192-replace keyfile file1.bthl file2.bthl ... fileN.bthl
```-----
### **AES-256**
Requires a 256-bit key, or 32 byte key file size.
```
bethela --enc-AES256-replace keyfile file1 file2 ... fileN
bethela --dec-AES256-replace keyfile file1.bthl file2.bthl ... fileN.bthl
```-----
### **Help flag**
```
bethela --help
```-----
### External Libraries
- [AES](https://github.com/mrdcvlsc/AES) - for AES encryption with hardware acceleration support.
- [BytePadding](https://github.com/mrdcvlsc/BytePadding) - for simple padding operations.
- [BlockCipherModes](https://github.com/mrdcvlsc/BlockCipherModes) - for block cipher encryption modes.