Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/avinal/blowfish
Blowfish and Blowfish 2 Encryption Algorithm Implementation in CPP.
https://github.com/avinal/blowfish
blowfish blowfish-128 blowfish-64 blowfish-algorithm blowfish2 cpp cpp11 cpp14 encryption encryption-decryption library
Last synced: 21 days ago
JSON representation
Blowfish and Blowfish 2 Encryption Algorithm Implementation in CPP.
- Host: GitHub
- URL: https://github.com/avinal/blowfish
- Owner: avinal
- License: other
- Created: 2021-02-15T15:25:49.000Z (almost 4 years ago)
- Default Branch: main
- Last Pushed: 2024-09-17T06:58:22.000Z (2 months ago)
- Last Synced: 2024-10-12T12:37:04.352Z (about 1 month ago)
- Topics: blowfish, blowfish-128, blowfish-64, blowfish-algorithm, blowfish2, cpp, cpp11, cpp14, encryption, encryption-decryption, library
- Language: C++
- Homepage:
- Size: 68.4 KB
- Stars: 6
- Watchers: 2
- Forks: 4
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Blowfish and Blowfish2 Encryption Algorithm
Blowfish is a symmetric block cipher that can be used as a drop-in replacement for DES or IDEA. It takes a variable-length key, from 32 bits to 448 bits, making it ideal for both domestic and exportable use. Blowfish was designed in 1993 by Bruce Schneier as a fast, free alternative to existing encryption algorithms. Since then it has been analyzed considerably, and it is slowly gaining acceptance as a strong encryption algorithm. Blowfish is unpatented and license-free, and is available free for all uses.
Blowfish 2 was released in 2005. It has exactly the same design but has twice as many S tables and uses 64-bit integers instead of 32-bit integers. It no longer works on 64-bit blocks but on 128-bit blocks like AES. 128-bit block, 64 rounds, key up to 4224 bits.
## About this project
This is a C++ implementation of the encryption algorithm.
## How to use this in your project?
1. You may fork it and use it like any other source file in your project. You only need [blowfish.hpp](include/blowfish/blowfish.hpp) and [blowfish.cpp](src/blowfish.cpp) files. Just modify the header as per your convienence.
2. If you are using CMake, the work is lot easier. You can add this as a git submodule. It isolates your project from this dependency.```bash
# In your project root type these commands
git submodule add https://github.com/avinal/blowfish
# considering this addition is your only change
git commit -m "blowfish submodule added"
git push origin main
```Add this to your CMakeLists.txt as well.
## References
- [Description of a new variable-length key, 64-bit block cipher (Blowfish)](https://link.springer.com/chapter/10.1007/3-540-58108-1_24)
- [The Blowfish Encryption Algorithm](https://www.schneier.com/academic/blowfish/)
- [The Blowfish 2 C Implementation](https://github.com/erwanmilon/blowfish2/)