Skip to content

Commit ae33e40

Browse files
Merge pull request #24 from cyclone-github/dev
v1.3.0; 2026-04-10
2 parents c19e123 + 699280b commit ae33e40

4 files changed

Lines changed: 740 additions & 163 deletions

File tree

‎CHANGELOG.md‎

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,14 @@
1+
### v1.3.0; 2026-04-10
2+
```
3+
added HMAC modes: -m 50, 60, 150, 160, 1450, 1460, 1750, 1760, 6050, 6060
4+
added PBKDF2 modes: -m 10900, 11900, 12000, 12100
5+
added scrypt mode: -m 8900
6+
added BLAKE2 modes: -m 600, 610, 620, 31000, 34800, 34810, 34820, 33300
7+
added hashcat UTF-16LE modes: -m 30, 40, 70, 130, 140, 170, 1430, 1440, 1470, 1730, 1740, 1770
8+
optimized salt RNG for fewer syscalls on salted hash modes
9+
added sanity check on invalid -m nth before opening stdin/wordlist
10+
compiled with Go v1.26.2
11+
```
112
### v1.2.2; 2026-01-23
213
```
314
added mode: halfmd5 (hashcat -m 5100)

‎README.md‎

Lines changed: 60 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -9,26 +9,27 @@
99
# hashgen - Cyclone's hash generator
1010
```
1111
$ hashgen -m md5 -w rockyou.txt -b
12-
2026/01/23 11:44:20 Starting...
13-
2026/01/23 11:44:20 Processing file: rockyou.txt
14-
2026/01/23 11:44:20 Hash function: md5
15-
2026/01/23 11:44:20 CPU Threads: 16
16-
2026/01/23 11:44:20 Finished processing 14344391 lines in 0.460 sec (31.215 M lines/sec)
12+
2026/04/11 12:28:58 Starting...
13+
2026/04/11 12:28:58 Processing file: /media/ramdisk/rockyou.txt
14+
2026/04/11 12:28:58 Hash function: 0
15+
2026/04/11 12:28:58 CPU Threads: 16
16+
2026/04/11 12:28:58 Finished processing 14344391 lines in 0.446 sec (32.127 M lines/sec)
1717
```
18-
**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).** 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.
18+
**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 hasharate 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.
1919

2020
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.
2121

2222
To use hashgen, type your mode, wordlist input & hash output files with a simple command line.
2323

2424
### Features:
2525
- Maintains original input order [PR 10](https://github.com/cyclone-github/hashgen/pull/10)
26-
- Supports 60+ modes/functions (see list below)
27-
- Encode / decode base64 & base58
26+
- Supports 95+ modes/functions (see list below)
27+
- Encode / decode base64, base58, base32
2828
- Hex / dehex wordlists
2929
- Supports ASCII, UTF-8 and $HEX[] input
3030
- Supports UTF-8 (default) or $HEX[] output
31-
- Supports multiple salted modes such as -m 110 / -m 120
31+
- Supports multiple salted modes
32+
- Supports HMAC, KDF, scrypt, bcrypt, linux shadow modes, checksums, morsecode, etc
3233

3334
| Useage Examples | Command Line |
3435
|-----------|-----------|
@@ -47,25 +48,26 @@ To use hashgen, type your mode, wordlist input & hash output files with a simple
4748
| -t | {cpu threads} |
4849
| -o | {wordlist output} |
4950
| -b | {benchmark mode} |
51+
| -i | {iterations - PBKDF2} |
5052
| -cost | {bcrypt} |
5153
| -hashplain | {generates hash:plain pairs} |
5254
| -help | {help menu} |
5355
| -version | {version info} |
5456

5557
### Supported Functions:
56-
| Function: | Hashcat Mode: |
58+
| Function: | Hashcat Mode: |
5759
|-----------------|----------------|
5860
| **`Plaintext & Encoding`** | |
5961
| plaintext / dehex | 99999 (decode $HEX[]) |
6062
| hex | (encode to $HEX[]) |
61-
| base64encode | |
62-
| base64decode | |
63-
| base58encode | |
64-
| base58decode | |
65-
| base32encode | |
6663
| base32decode | |
64+
| base32encode | |
65+
| base58decode | |
66+
| base58encode | |
67+
| base64decode | |
68+
| base64encode | |
6769
| morsecode | (ITU-R M.1677-1) |
68-
| morsedecode | |
70+
| morsedecode | (ITU-R M.1677-1) |
6971
| | |
7072
| **`Checksums`** | |
7173
| crc32 | |
@@ -78,13 +80,23 @@ To use hashgen, type your mode, wordlist input & hash output files with a simple
7880
| halfmd5 | 5100 |
7981
| md5passsalt | 10 |
8082
| md5saltpass | 20 |
83+
| 30 | (hashcat compatible md5 utf16le($pass).$salt) |
84+
| 40 | (hashcat compatible md5 $salt.utf16le($pass)) |
85+
| 50 | (hashcat compatible HMAC-MD5 key = $pass) |
86+
| 60 | (hashcat compatible HMAC-MD5 key = $salt) |
87+
| 70 | (hashcat compatible md5 utf16le($pass)) |
8188
| md5md5 | 2600 |
8289
| | |
8390
| **`SHA1`** | |
8491
| sha1 | 100 |
92+
| sha1sha1 | 4500 |
8593
| sha1passsalt | 110 |
8694
| sha1saltpass | 120 |
87-
| sha1sha1 | 4500 |
95+
| 130 | (hashcat compatible sha1 utf16le($pass).$salt) |
96+
| 140 | (hashcat compatible sha1 $salt.utf16le($pass)) |
97+
| 150 | (hashcat compatible HMAC-SHA1 key = $pass) |
98+
| 160 | (hashcat compatible HMAC-SHA1 key = $salt) |
99+
| 170 | (hashcat compatible sha1 utf16le($pass)) |
88100
| | |
89101
| **`SHA2`** | |
90102
| sha224 | 1300 |
@@ -93,12 +105,22 @@ To use hashgen, type your mode, wordlist input & hash output files with a simple
93105
| sha256 | 1400 |
94106
| sha256passsalt | 1410 |
95107
| sha256saltpass | 1420 |
108+
| 1430 | (hashcat compatible sha256 utf16le($pass).$salt) |
109+
| 1440 | (hashcat compatible sha256 $salt.utf16le($pass)) |
110+
| 1450 | (hashcat compatible HMAC-SHA256 key = $pass) |
111+
| 1460 | (hashcat compatible HMAC-SHA256 key = $salt) |
112+
| 1470 | (hashcat compatible sha256 utf16le($pass)) |
96113
| sha384 | 10800 |
97114
| sha384passsalt | 10810 |
98115
| sha384saltpass | 10820 |
99116
| sha512 | 1700 |
100117
| sha512passsalt | 1710 |
101118
| sha512saltpass | 1720 |
119+
| 1730 | (hashcat compatible sha512 utf16le($pass).$salt) |
120+
| 1740 | (hashcat compatible sha512 $salt.utf16le($pass)) |
121+
| 1750 | (hashcat compatible HMAC-SHA512 key = $pass) |
122+
| 1760 | (hashcat compatible HMAC-SHA512 key = $salt) |
123+
| 1770 | (hashcat compatible sha512 utf16le($pass)) |
102124
| sha512-224 | |
103125
| sha512-256 | |
104126
| | |
@@ -115,38 +137,51 @@ To use hashgen, type your mode, wordlist input & hash output files with a simple
115137
| keccak-512 | 18000 |
116138
| | |
117139
| **`BLAKE2`** | |
140+
| blake2s-256 | |
141+
| 31000 | (hashcat compatible BLAKE2s-256) |
142+
| 33300 | (hashcat compatible HMAC-BLAKE2s key = $pass) |
118143
| blake2b-256 | |
144+
| 34800 | (hashcat compatible BLAKE2b-256) |
119145
| blake2b-384 | |
120146
| blake2b-512 | |
121-
| 600 | (hashcat compatible blake2b-512) |
122-
| blake2s-256 | |
123-
| 31000 | (hashcat compatible blake2s-256) |
147+
| 600 | (hashcat compatible BLAKE2b-512) |
148+
| 610 | (hashcat compatible BLAKE2b-512 pass.salt) |
149+
| 620 | (hashcat compatible BLAKE2b-512 salt.pass) |
150+
| 34810 | (hashcat compatible BLAKE2b-256 pass.salt) |
151+
| 34820 | (hashcat compatible BLAKE2b-256 salt.pass) |
124152
| | |
125153
| **`Other Hashes`** | |
154+
| ntlm | 1000 (Windows NT) |
155+
| mysql4/mysql5 | 300 |
126156
| ripemd-160 | 6000 |
127-
| mysql5 | 300 |
128-
| ntlm | 1000 |
157+
| 6050 | (hashcat compatible HMAC-RIPEMD160 key = $pass) |
158+
| 6060 | (hashcat compatible HMAC-RIPEMD160 key = $salt) |
129159
| | |
130160
| **`Crypt / KDF`** | |
131161
| argon2id | 34000 |
132162
| bcrypt | 3200 |
133-
| wpbcrypt | (WordPress HMAC-SHA384 + bcrypt) |
163+
| wpbcrypt | (WordPress bcrypt-HMAC-SHA384) |
134164
| md5crypt | 500 (`Linux shadow $1$`) |
135165
| sha256crypt | 7400 (`Linux shadow $5$`) |
136166
| sha512crypt | 1800 (`Linux shadow $6$`) |
137167
| phpass | 400 (`PHP/WordPress $P$/phpBB3 $H$`) |
138168
| yescrypt | (`Linux shadow $y$`) |
169+
| scrypt | 8900 |
170+
| 10900 | (hashcat compatible PBKDF2-HMAC-SHA256) |
171+
| 11900 | (hashcat compatible PBKDF2-HMAC-MD5) |
172+
| 12000 | (hashcat compatible PBKDF2-HMAC-SHA1) |
173+
| 12100 | (hashcat compatible PBKDF2-HMAC-SHA512) |
139174

140175
### Benchmarks:
141176
- https://github.com/cyclone-github/hashgen-testing/tree/main/benchmarks
142177
- 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!
143178
- https://github.com/cyclone-github/hashgen-testing
144179

145-
### Install latest release:
180+
### Install latest published release:
146181
```
147182
go install github.com/cyclone-github/hashgen@latest
148183
```
149-
### Install from latest source code (bleeding edge):
184+
### Install latest source code (bleeding edge):
150185
```
151186
go install github.com/cyclone-github/hashgen@main
152187
```

‎go.mod‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
module github.com/cyclone-github/hashgen
22

3-
go 1.25.5
3+
go 1.26.2
44

55
require (
66
github.com/cyclone-github/base58 v1.0.1

0 commit comments

Comments
 (0)