Initial data commit
This commit is contained in:
parent
72d218235f
commit
f23f22d71c
199087 changed files with 3378941 additions and 0 deletions
54
Task/Parallel-brute-force/D/parallel-brute-force.d
Normal file
54
Task/Parallel-brute-force/D/parallel-brute-force.d
Normal file
|
|
@ -0,0 +1,54 @@
|
|||
import std.digest.sha;
|
||||
import std.parallelism;
|
||||
import std.range;
|
||||
import std.stdio;
|
||||
|
||||
// Find the five lower-case letter strings representing the following sha256 hashes
|
||||
immutable p1 = cast(ubyte[32]) x"1115dd800feaacefdf481f1f9070374a2a81e27880f187396db67958b207cbad";
|
||||
immutable p2 = cast(ubyte[32]) x"3a7bd3e2360a3d29eea436fcfb7e44c735d117c42d1c1835420b6b9942dd4f1b";
|
||||
immutable p3 = cast(ubyte[32]) x"74e1bb62f8dabb8125a58852b63bdf6eaef667cb56ac7f7cdba6d7305c50a22f";
|
||||
|
||||
void main() {
|
||||
import std.datetime.stopwatch;
|
||||
|
||||
auto sw = StopWatch(AutoStart.yes);
|
||||
// Switch these top loops to toggle between non-parallel and parrallel solutions.
|
||||
// foreach(char a; 'a'..'z'+1) {
|
||||
foreach(i, a; taskPool.parallel(iota('a', 'z'+1))) {
|
||||
char[5] psw;
|
||||
psw[0] = cast(char) a;
|
||||
foreach(char b; 'a'..'z'+1) {
|
||||
psw[1] = b;
|
||||
foreach(char c; 'a'..'z'+1) {
|
||||
psw[2] = c;
|
||||
foreach(char d; 'a'..'z'+1) {
|
||||
psw[3] = d;
|
||||
foreach(char e; 'a'..'z'+1) {
|
||||
psw[4] = e;
|
||||
auto hash = psw.sha256Of;
|
||||
if (equal(hash, p1) || equal(hash, p2) || equal(hash, p3)) {
|
||||
writefln("%s <=> %(%x%)", psw, hash);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
sw.stop;
|
||||
writeln(sw.peek);
|
||||
}
|
||||
|
||||
//Specialization that supports static arrays too
|
||||
bool equal(T)(const T[] p, const T[] q) {
|
||||
if (p.length != q.length) {
|
||||
return false;
|
||||
}
|
||||
|
||||
for(int i=0; i<p.length; i++) {
|
||||
if (p[i] != q[i]) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue