hashgen - the blazingly fast hash generator
-
Title: hashgen
Author: cyclone
URL: https://github.com/cyclone-github/hashgen
Description: hashgen - the blazingly fast hash generatorInstall latest from source code:
go install github.com/cyclone-github/hashgen@mainhashgen - Cyclone's hash generator
$ hashgen -m md5 -w rockyou.txt -b 2026/08/18 18:26:09 Starting... 2026/08/18 18:26:09 Processing file: /media/ramdisk/rockyou.txt 2026/08/18 18:26:09 Hash function: 0 2026/08/18 18:26:09 CPU Threads: 16 2026/08/18 18:26:10 Finished processing 14344391 lines in 0.443 sec (32.346 M lines/sec)Hashgen has a top recorded hashrate of 32.346 million md5/sec on the test rig's Ryzen 7 3700X CPU. (see benchmarks) Much faster hashrates have been seen on newer / faster CPUs.
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 130+ modes/functions (see list below)
- Encode / decode base64, base58, base32
- Hex / dehex wordlists
- Supports ASCII, UTF-8 and $HEX[] input
- Supports UTF-8 (default) or $HEX[] output
- Supports multiple salted modes
- Also supports HMAC, KDF, scrypt, bcrypt, Linux shadow modes, checksums, morsecode, etc
Usage 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} -i {iterations - PBKDF2} -cost {bcrypt} -hashplain {generates hash:plain pairs} -help {help menu} -version {version info} Supported Functions:
Function: Hashcat Mode: Plaintext & Encodingplaintext/dehex 99999 (decode $HEX[]) hex (encode to $HEX[]) base32decode base32encode base58decode base58encode base64decode base64encode morsecode (ITU-R M.1677-1) morsedecode (ITU-R M.1677-1) Checksumscrc32 11500 (CRC32 Hashcat format) crc64 MDxmd4 900 md5 0 halfmd5 5100 md5passsalt 10 md5saltpass 20 md5utf16passsalt 30 md5utf16saltpass 40 hmacmd5pass 50 hmacmd5salt 60 md5utf16le 70 md5md5 2600 3500 (md5(md5(md5($pass)))) 4300 (md5(strtoupper(md5($pass)))) 4400 (md5(sha1($pass))) 32800 (md5(sha1(md5($pass)))) MD6md6128 md6224 md6256 34600 md6384 md6512 SHA1sha1 100 ldapsha 101 (Netscape LDAP {SHA}) sha1passsalt 110 ssha 111 (NSLDAPS SSHA-1) sha1saltpass 120 sha1utf16passsalt 130 sha1utf16saltpass 140 hmacsha1pass 150 hmacsha1salt 160 sha1utf16le 170 sha1sha1 4500 4700 (sha1(md5($pass))) 18500 (sha1(md5(md5($pass)))) 18501 (sha1(md5(sha1($pass)))) SHA2sha224 1300 sha224passsalt 1310 sha224saltpass 1320 34400 (sha224(sha224($pass))) 34500 (sha224(sha1($pass))) sha256 1400 sha256passsalt 1410 ssha256 1411 (LDAP {SSHA256}) sha256saltpass 1420 sha256utf16passsalt 1430 sha256utf16saltpass 1440 hmacsha256pass 1450 hmacsha256salt 1460 sha256utf16le 1470 20800 (sha256(md5($pass))) 35900 (sha256(sha1($pass))) sha384 10800 sha384passsalt 10810 sha384saltpass 10820 sha384utf16passsalt 10830 sha384utf16saltpass 10840 sha384utf16le 10870 sha512 1700 sha512passsalt 1710 ssha512 1711 (LDAP {SSHA512}) sha512saltpass 1720 sha512utf16passsalt 1730 sha512utf16saltpass 1740 hmacsha512pass 1750 hmacsha512salt 1760 sha512utf16le 1770 sha512224 sha512256 SHA3sha3224 17300 sha3256 17400 sha3384 17500 sha3512 17600 Keccakkeccak224 17700 keccak256 17800 keccak384 17900 keccak512 18000 BLAKE2blake2s256 31000 (BLAKE2s-256 $BLAKE2$ format) hmacblake2spass 33300 blake2b256 34800 (BLAKE2b-256 $BLAKE2$ format) blake2b256passsalt 34810 blake2b256saltpass 34820 blake2b384 blake2b512 600 (BLAKE2b-512 $BLAKE2$ format) blake2b512passsalt 610 blake2b512saltpass 620 Other Hashesntlm 1000 (Windows NT) mysql4/mysql5 300 ripemd160 6000 hmacripemd160pass 6050 hmacripemd160salt 6060 Streebog / GOST R 34.11-2012streebog256 11700 hmacstreebog256pass 11750 hmacstreebog256salt 11760 streebog512 11800 hmacstreebog512pass 11850 hmacstreebog512salt 11860 Crypt / KDFargon2id 34000 bcrypt 3200 bcryptmd5 25600 bcryptsha1 25800 bcryptsha512 28400 bcryptsha256 30600 wpbcrypt 35500 (WordPress bcrypt-HMAC-SHA384) md5crypt 500 (Linux shadow $1$) sha1crypt 15100 (NetBSD/Juniper SHA1 crypt) sha256crypt 7400 (Linux shadow $5$) sha512crypt 1800 (Linux shadow $6$) sm3crypt 35100 (Unix $sm3$) phpass/phpbb3 400 ($P$ / $H$) scrypt 8900 pbkdf2sha256 10900 pbkdf2md5 11900 pbkdf2sha1 12000 pbkdf2sha512 12100 yescrypt (Linux shadow $y$) gostyescrypt (Linux shadow $gy$) cmiyc (KoreLogic CMIYC 2026 contest algorithm) 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 from source:
- This assumes you have Go and Git installed
git clone https://github.com/cyclone-github/hashgen.git# clone repocd hashgen# enter project directorygo 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 a 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/base58gave 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) -
New version of hashgen published.
https://github.com/cyclone-github/hashgen/releases/tag/v1.2.0v1.2.0; 2025-11-08 addressed raw base-16 issue https://github.com/cyclone-github/hashgen/issues/8 added feature: "keep-order" from https://github.com/cyclone-github/hashgen/issues/7 added dynamic lines/sec from https://github.com/cyclone-github/hashgen/issues/11 added modes: mysql5 (300), phpass (400), md5crypt (500), sha256crypt (7400), sha512crypt (1800), Wordpress bcrypt-HMAC-SHA384 (wpbcrypt) added hashcat salted modes: -m 10, 20, 110, 120, 1410, 1420, 1310, 1320, 1710, 1720, 10810, 10820 added hashcat modes: -m 2600, 4500 added encoding modes: base32encode, base32decode cleaned up hashFunc aliases, algo typo, hex mode, hashBytes case switch, base64 and base58 decoders fixed ntlm encoding issue added sanity check to not print blank / invalid hash lines (part of ntlm fix, but applies to all hash modes) converted checkForHex from string to byte updated yescrypt parameters to match debian 12 (libxcrypt) defaults -
New version of hashgen released.
https://github.com/cyclone-github/hashgen/releases/tag/v1.2.2v1.2.2; 2026-01-23 * added mode: halfmd5 -m 5100 by @cyclone-github in https://github.com/cyclone-github/hashgen/pull/20 * added mode: morsedecode https://github.com/cyclone-github/hashgen/commit/9ef6c99604a00d9a0d5f11798a073a34d34169df * chore(deps): bump golang.org/x/crypto from 0.43.0 to 0.47.0 -
When will the -m 22000 type be supported?
-
When will the -m 22000 type be supported?
-
https://github.com/cyclone-github/hashgen/releases/tag/v1.3.0
v1.3.0; 2026-04-10 added HMAC modes: -m 50, 60, 150, 160, 1450, 1460, 1750, 1760, 6050, 6060 added PBKDF2 modes: -m 10900, 11900, 12000, 12100 added scrypt mode: -m 8900 added BLAKE2 modes: -m 600, 610, 620, 31000, 34800, 34810, 34820, 33300 added hashcat UTF-16LE modes: -m 30, 40, 70, 130, 140, 170, 1430, 1440, 1470, 1730, 1740, 1770 optimized salt RNG for fewer syscalls on salted hash modes added sanity check on invalid -m nth before opening stdin/wordlist compiled with Go v1.26.2Full Changelog: https://github.com/cyclone-github/hashgen/compare/v1.2.2...v1.3.0
-
https://github.com/cyclone-github/hashgen/releases/tag/v1.3.2
v1.3.2; 2026-08-18
add mode: gost-yescrypt add mode: SSHA -m 111 add mode: sha1crypt -m 15100 add mode: sm3crypt -m 35100 add mode: cmiyc (KoreLogic CMIYC 2026 contest algorithm) add modes: Streebog/GOST 2012 -m 11700, 11750, 11760, 11800, 11850, 11860 add modes: SHA-384 UTF-16LE -m 10830, 10840, 10870 add modes: LDAP SHA/SSHA -m 101, 1411, 1711 add modes: -m 3500, 4300, 4400, 4700, 18500, 18501, 20800, 32800, 34400, 34500, 35900 refactor modes: -m 2600 and 4500 add bcrypt prehash modes: -m 25600, 25800, 28400, 30600 add bcrypt aliases: bcryptmd5, bcryptsha1, bcryptsha512, bcryptsha256 add hashcat alias: wpbcrypt -m 35500v1.3.1; 2026-04-13
add modes: MD6-128, MD6-224, MD6-256, MD6-384, MD6-512
Hello! It looks like you're interested in this conversation, but you don't have an account yet.
Getting fed up of having to scroll through the same posts each visit? When you register for an account, you'll always come back to exactly where you were before, and choose to be notified of new replies (either via email, or push notification). You'll also be able to save bookmarks and upvote posts to show your appreciation to other community members.
With your input, this post could be even better 💗
Register Login