X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=Client%20Applications%2Frcracki_mt%2Ffast_md5.cpp;h=3df6afb276b8004dada612f12c001acea915c06b;hb=ce75ca839a9cd1863ea13636ffebf7ee1dcc4267;hp=8d60aee2736417ac3f81c7482e44ae4b3f05c025;hpb=4d512f6f97940c2f10ab435ef017e39cdc69837a;p=freerainbowtables diff --git a/Client Applications/rcracki_mt/fast_md5.cpp b/Client Applications/rcracki_mt/fast_md5.cpp index 8d60aee..3df6afb 100644 --- a/Client Applications/rcracki_mt/fast_md5.cpp +++ b/Client Applications/rcracki_mt/fast_md5.cpp @@ -9,11 +9,30 @@ * - For lengths < 16, transformation steps are "unrolled" using macros/defines * - Constants used whenever possible, it's the compiler's job to sort them out * - Padding is done on 4-byte words, and memory copied as last resort. + * + * rcracki_mt is a multithreaded implementation and fork of the original + * RainbowCrack + * + * Copyright 2009, 2010 Daniël Niggebrugge + * Copyright 2009, 2010 James Nobis + * + * This file is part of racrcki_mt. + * + * rcracki_mt is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * rcracki_mt is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with rcracki_mt. If not, see . */ - -typedef unsigned int UINT4; - +#include "fast_md5.h" /* MD5 defines as per RFC reference implementation */ @@ -115,9 +134,9 @@ typedef unsigned int UINT4; // md5 step #define MD5STEP(f, a, b, c, d, AC, x, s) { \ - (a) += f ((b), (c), (d)); \ + (a) += f ((b), (c), (d)); \ (a) += (AC) + (x); \ - (a) = ROTATE_LEFT ((a), (s)); \ + (a) = ROTATE_LEFT ((a), (s)); \ (a) += (b); \ } @@ -228,6 +247,7 @@ typedef unsigned int UINT4; #ifndef MD5_pad_w1 static inline UINT4 MD5_pad_w1(UINT4 data) { +// XXX x86 specific __asm__ ( "movb %%al, %%cl \n\t" "xorl %1, %1 \n\t" @@ -245,6 +265,7 @@ static inline UINT4 MD5_pad_w1(UINT4 data) #ifndef MD5_pad_w3 static inline UINT4 MD5_pad_w3(UINT4 data) { +// XXX x86 specific __asm__ ( "roll $8, %1 \n\t" "movb $128, %%al \n\t"