Skip to content

cyclone-github/hashgen

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

159 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Readme Card

GitHub issues License GitHub release Go Reference

hashgen - Cyclone's hash generator

$ hashgen -m md5 -w rockyou.txt -b
2026/04/11 12:28:58 Starting...
2026/04/11 12:28:58 Processing file: /media/ramdisk/rockyou.txt
2026/04/11 12:28:58 Hash function: 0
2026/04/11 12:28:58 CPU Threads: 16
2026/04/11 12:28:58 Finished processing 14344391 lines in 0.446 sec (32.127 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). Hashgen has a top recorded hashrate of 32.127 million 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 95+ 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
  • Supports HMAC, KDF, scrypt, bcrypt, linux shadow modes, checksums, morsecode, etc
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}
-i {iterations - PBKDF2}
-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[])
base32decode
base32encode
base58decode
base58encode
base64decode
base64encode
morsecode (ITU-R M.1677-1)
morsedecode (ITU-R M.1677-1)
Checksums
crc32
11500 (hashcat compatible CRC32)
crc64
MDx
md4 900
md5 0
halfmd5 5100
md5passsalt 10
md5saltpass 20
30 (hashcat compatible md5 utf16le($pass).$salt)
40 (hashcat compatible md5 $salt.utf16le($pass))
50 (hashcat compatible HMAC-MD5 key = $pass)
60 (hashcat compatible HMAC-MD5 key = $salt)
70 (hashcat compatible md5 utf16le($pass))
md5md5 2600
SHA1
sha1 100
sha1sha1 4500
sha1passsalt 110
sha1saltpass 120
130 (hashcat compatible sha1 utf16le($pass).$salt)
140 (hashcat compatible sha1 $salt.utf16le($pass))
150 (hashcat compatible HMAC-SHA1 key = $pass)
160 (hashcat compatible HMAC-SHA1 key = $salt)
170 (hashcat compatible sha1 utf16le($pass))
SHA2
sha224 1300
sha224passsalt 1310
sha224saltpass 1320
sha256 1400
sha256passsalt 1410
sha256saltpass 1420
1430 (hashcat compatible sha256 utf16le($pass).$salt)
1440 (hashcat compatible sha256 $salt.utf16le($pass))
1450 (hashcat compatible HMAC-SHA256 key = $pass)
1460 (hashcat compatible HMAC-SHA256 key = $salt)
1470 (hashcat compatible sha256 utf16le($pass))
sha384 10800
sha384passsalt 10810
sha384saltpass 10820
sha512 1700
sha512passsalt 1710
sha512saltpass 1720
1730 (hashcat compatible sha512 utf16le($pass).$salt)
1740 (hashcat compatible sha512 $salt.utf16le($pass))
1750 (hashcat compatible HMAC-SHA512 key = $pass)
1760 (hashcat compatible HMAC-SHA512 key = $salt)
1770 (hashcat compatible sha512 utf16le($pass))
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
blake2s-256
31000 (hashcat compatible BLAKE2s-256)
33300 (hashcat compatible HMAC-BLAKE2s key = $pass)
blake2b-256
34800 (hashcat compatible BLAKE2b-256)
blake2b-384
blake2b-512
600 (hashcat compatible BLAKE2b-512)
610 (hashcat compatible BLAKE2b-512 pass.salt)
620 (hashcat compatible BLAKE2b-512 salt.pass)
34810 (hashcat compatible BLAKE2b-256 pass.salt)
34820 (hashcat compatible BLAKE2b-256 salt.pass)
Other Hashes
ntlm 1000 (Windows NT)
mysql4/mysql5 300
ripemd-160 6000
6050 (hashcat compatible HMAC-RIPEMD160 key = $pass)
6060 (hashcat compatible HMAC-RIPEMD160 key = $salt)
Crypt / KDF
argon2id 34000
bcrypt 3200
wpbcrypt (WordPress bcrypt-HMAC-SHA384)
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$)
scrypt 8900
10900 (hashcat compatible PBKDF2-HMAC-SHA256)
11900 (hashcat compatible PBKDF2-HMAC-MD5)
12000 (hashcat compatible PBKDF2-HMAC-SHA1)
12100 (hashcat compatible PBKDF2-HMAC-SHA512)

Benchmarks:

Install latest published release:

go install github.com/cyclone-github/hashgen@latest

Install latest source code (bleeding edge):

go install github.com/cyclone-github/hashgen@main

Compile from source:

  • This assumes you have Go and Git installed
    • git clone https://github.com/cyclone-github/hashgen.git # clone repo
    • cd hashgen # enter project directory
    • go mod init hashgen # initialize Go module (skips if go.mod exists)
    • go mod tidy # download dependencies
    • go build -ldflags="-s -w" . # compile binary in current directory
    • go install -ldflags="-s -w" . # compile binary and install to $GOPATH
  • Compile from source code how-to:

Changelog:

Mentions:

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!