hashgen - the blazingly fast hash generator
-
Title
: hashgen
Author
: cyclone
URL
: https://github.com/cyclone-github/hashgen
Description
: hashgen - the blazingly fast hash generatorhashgen - Cyclone's hash generator
$ hashgen -m md5 -w rockyou.txt -b 2025/08/23 19:18:27 Starting... 2025/08/23 19:18:27 Processing file: rockyou.txt 2025/08/23 19:18:27 Hash function: md5 2025/08/23 19:18:27 CPU Threads: 16 2025/08/23 19:18:28 Finished processing 14344391 lines in 0.465 sec (30.839 M lines/sec)
As of the this writing, hashgen (go) has a 2,519% faster md5 hashrate vs the next fastest publicly available CPU based hash generator (see benchmarks). While this is extremely fast, these hashrates can be beat by improved code optimization and/or coding in faster programming languages (I'm looking at you C, Rust and Zig).
Since version
v2023-10-30.1600
, hashgen has a top recorded hasharate of 30,228,048 md5/sec on the test rig's Ryzen 7 3700X CPU! Much faster hashrates have been seen on higher end CPU's.Hashgen is a CLI hash generator written in Go and can be cross compiled for Linux, Raspberry Pi, Windows & Mac, although testing and compiling is mainly done on debian 12 linux.
To use hashgen, type your mode, wordlist input & hash output files with a simple command line.
Features:
- Maintains original input order PR 10
- Supports 58+ modes/functions (see list below)
- Encode / decode base64 & base58
- Hex / dehex wordlists
- Supports ASCII, UTF-8 and $HEX[] input
- Supports UTF-8 (default) or $HEX[] output
- Supports multiple salted modes such as -m 110 / -m 120
Useage Examples Command Line read wordlist.txt, hash to md5 and write to output.txt ./hashgen -m md5 -w wordlist.txt -o output.txt pipe wordlist into hashgen and write to stdout cat wordlist.txt | ./hashgen -m md5 decode $HEX[] wordlist to plaintext ./hashgen -m plaintext -w hex_wordlist.txt convert wordlist to $HEX[] ./hashgen -m hex -w wordlist.txt output hash:plain ./hashgen -m md5 -w wordlist.txt -hashplain benchmark md5 ./hashgen -m md5 -w wordlist.txt -b Supported Options:
Flag: Description: -m {mode} -w {wordlist input} -t {cpu threads} -o {wordlist output} -b {benchmark mode} -cost {bcrypt} -hashplain {generates hash:plain pairs} -help {help menu} -version {version info} Supported Functions:
Function: Hashcat Mode: Plaintext & Encoding
plaintext / dehex 99999 (decode $HEX[]) hex (encode to $HEX[]) base64encode base64decode base58encode base58decode morsecode (ITU-R M.1677-1) Checksums
crc32 11500 (hashcat compatible CRC32) crc64 MDx
md4 900 md5 0 md5passsalt 10 md5saltpass 20 md5md5 2600 SHA1
sha1 100 sha1passsalt 110 sha1saltpass 120 sha1sha1 4500 SHA2
sha224 1300 sha224passsalt 1310 sha224saltpass 1320 sha256 1400 sha256passsalt 1410 sha256saltpass 1420 sha384 10800 sha384passsalt 10810 sha384saltpass 10820 sha512 1700 sha512passsalt 1710 sha512saltpass 1720 sha512-224 sha512-256 SHA3
sha3-224 17300 sha3-256 17400 sha3-384 17500 sha3-512 17600 Keccak
keccak-224 17700 keccak-256 17800 keccak-384 17900 keccak-512 18000 BLAKE2
blake2b-256 blake2b-384 blake2b-512 600 (hashcat compatible blake2b-512) blake2s-256 31000 (hashcat compatible blake2s-256) Other Hashes
ripemd-160 6000 mysql5 300 ntlm 1000 Crypt / KDF
argon2id 34000 bcrypt 3200 wpbcrypt (WordPress HMAC-SHA384 + bcrypt) md5crypt 500 ( Linux shadow $1$
)sha256crypt 7400 ( Linux shadow $5$
)sha512crypt 1800 ( Linux shadow $6$
)phpass 400 ( PHP/WordPress $P$/phpBB3 $H$
)yescrypt ( Linux shadow $y$
)Benchmarks:
- https://github.com/cyclone-github/hashgen-testing/tree/main/benchmarks
- In addition to hashgen (go), I have also written hashgen in python, php, C, and Rust, although Rust and C need a lot of work to unlock their full performance potential. If you speak C or Rust, I'd be curious to see how fast you can push hashgen!
Compile hashgen from source:
- If you want the latest features, compiling from source is the best option since the release version may run several revisions behind the source code.
- This assumes you have Go and Git installed
git clone https://github.com/cyclone-github/hashgen.git
# clone repocd hashgen
# enter project directorygo mod init hashgen
# initialize Go module (skips if go.mod exists)go mod tidy
# download dependenciesgo build -ldflags="-s -w" .
# compile binary in current directorygo install -ldflags="-s -w" .
# compile binary and install to $GOPATH
- Compile from source code how-to:
Changelog:
Mentions:
- Go Package Documentation: https://pkg.go.dev/github.com/cyclone-github/hashgen
- hashcat wiki: https://hashcat.net/wiki/
- hashkiller forum: https://forum.hashkiller.io/index.php?threads/cyclone-hashgen.63140/
- hashpwn forum: https://forum.hashpwn.net/post/89
- MajorGeeks: https://www.majorgeeks.com/files/details/hashgen.html
- Softpedia: https://www.softpedia.com/get/System/File-Management/hashgen-go.shtml
Antivirus False Positives:
- Several antivirus programs on VirusTotal incorrectly detect hashgen as a false positive. This issue primarily affects the Windows executable binary, but is not limited to it. If this concerns you, I recommend carefully reviewing hashgen's source code, then proceed to compile the binary yourself.
- Uploading your compiled hashgen binaries to https://virustotal.com and leaving an upvote or a comment would be helpful.
Thoughts:
- Why write hashgen? hashgen is nothing new (to me) as this project started several years ago while needing a way to quickly convert wordlists to md5 or sha1 on linux terminal. Several versions of hashgen have been written over the years in several languages: python, php, Go, C and Rust. While the actively maintained version is hashgen (go), which offers enhanced features and superior performance, the "hashgen-testing" repository linked below contains testing versions of hashgen in different programming languages:
- Why write hashgen in Go instead of xyz language? I did this to push my Go coding skills while also seeing how fast I could push Go. During early testing, I was not expecting hashgen to be all that fast, but I have been pleasantly surprised!
- When I realized hashgen (go) was competitively fast compared to other publicly available hash generators, I decided to publish hashgen's code and binaries for others to use. I've really enjoyed this project and I hope you find it useful.
- If you found hashgen to be helpful, please consider giving this repository a star!
-
In the tradition of keeping hashgen blazingly fast, I published an optimized implementation of base58 to GitHub:
https://pkg.go.dev/github.com/cyclone-github/base58Switching hashgen's base58 encode/decode logic to
cyclone/base58
gave a performance increase of 500%.Key features of this base58 package:
- Backwards compatible with other base58 packages using a familiar API based on Go's stdlib
encoding/base64
- Written in pure Go using stdlib with no external dependencies
- Fast, efficient byte-based encoding/decoding
- Backwards compatible with other base58 packages using a familiar API based on Go's stdlib
-
New version of hashgen published.
https://github.com/cyclone-github/hashgen/releases/tag/v1.1.3v1.1.3; 2025-06-30 added mode "hex" for $HEX[] formatted output added alias "dehex" to "plaintext" mode improved "plaintext/dehex" logic to decode both $HEX[] and raw base-16 input
-
https://github.com/cyclone-github/hashgen/releases/tag/v1.1.4
v1.1.4; 2025-08-23 added modes: keccak-224, keccak-384, blake2b-256, blake2b-384, blake2b-512, blake2s-256 added benchmark flag, -b (to benchmark current mode, disables output) compiled with Go v1.25.0 which gives a small performance boost to multiple algos added notes concerning some NTLM hashes not being crackable with certain hash cracking tools due to encoding gremlins
-
As an experimental POC, I rewrote hashgen v1.2.0-dev in Rust. This is a major update to the previous hashgen (Rust) released in 2024 and includes most of the features in hashgen (Go) v1.2.0-dev. Consider this experimental and not for production.
https://github.com/cyclone-github/hashgen-testing/tree/main/hashgen_rust
hashgen (Rust)
$ ./hashgen.bin --version hashgen v1.2.0-rust https://github.com/cyclone-github/hashgen
$ ./hashgen.bin -m md5 -w rockyou.txt -b Starting... Processing file: rockyou.txt Hash function: md5 CPU Threads: 16 Finished processing 14344390 lines in 0.453 sec (31.639 M lines/sec)
hashgen (Go)
$ hashgen -version hashgen v1.2.0-dev; 2025-09-20.2300 https://github.com/cyclone-github/hashgen
$ hashgen -m md5 -w rockyou.txt -b 2025/09/23 17:29:51 Starting... 2025/09/23 17:29:51 Processing file: rockyou.txt 2025/09/23 17:29:51 Hash function: md5 2025/09/23 17:29:51 CPU Threads: 16 2025/09/23 17:29:52 Finished processing 14344391 lines in 0.437 sec (32.792 M lines/sec)