
Hashcat and oclHashcat have gone open source - Garbage
https://hashcat.net/forum/thread-4880-post-27401.html
======
devnikor
Oh, this switch
[https://github.com/hashcat/hashcat/blob/master/src/engine.c#...](https://github.com/hashcat/hashcat/blob/master/src/engine.c#L29)

~~~
meowface
What is the purpose of this, exactly? I assume it has to be some sort of
performance optimization.

Hashcat probably isn't the best model for clean code, since its primary goal
is to squeeze every drop of performance it can get.

~~~
pjc50
It's a hardcoded map of int to string. That's a fairly reasonable way of doing
it in vanilla C. How efficient it actually is is down to your compiler. And
some compilers impose maximum limits on the size of `case` statements..

An alternative would be a precomputed hash table, similar to what `gperf`
does. Requires more work in the build system though.

~~~
fit2rule
Besides the curious length of the switch, I'm not seeing anything particularly
'bad' about this code .. sort of left wondering what the big deal is? This is
perfectly reasonable code.

~~~
michael_h
It doesn't look too terrible, but it looks like it is optimized for speed, not
maintainability. I'm assuming that's why there is a lot of repeated code
(instead of putting it into a function/loop). The comments are _a little
spartan_.

------
Tinyyy
I've tried hashcat before, but does anyone know if oclHashcat works on Intel
GPUs? Specifically the Iris Pro 5200?

~~~
semi-extrinsic
If you're seriously interested in GPU acceleration, any reason not to spend
$150 on a GTX 950 and get ~5x the performance of your Iris Pro 5200?

~~~
Tinyyy
I'm just playing around with it for fun, not doing anything particularly
important. Also, I don't think I can connect a GPU to my Macbook Pro :(

~~~
semi-extrinsic
Sure. And it's a no go on a laptop. Though you can probably get a ~5 year old
desktop with PCIe for basically free if you ask around friends and relatives.
If you ssh into it, no need for a monitor either.

~~~
Tinyyy
Meh. That's a bit too much work for me.

------
mkagenius
I am happy :) It would be great if someone(or me) could increase the length
limit for sha512 hashes. Thank you.

------
platz
> the kernel needs to be compiled at run time

Are there examples of other programs that require this?

~~~
Gladdyu
Any OpenCL/CUDA program for GPGPU would require this. Different GPUs may have
different characteristics (core count, available instructions, memory sizes
and speeds), that need to be taken into account and can be optimized for. This
can only be done when you know the run-time target device, which is only at
run-time.

This is the reason why for GPGPU programs, you often supply the kernel/shader
as C code or another intermediate representation (vendor-specific assembly),
and the final compilation step is done by the GPU driver.

