diff -urp bleeding-jumbo-opt5/src/formats.c bleeding-jumbo-opt/src/formats.c --- bleeding-jumbo-opt5/src/formats.c 2015-09-11 15:40:58 +0000 +++ bleeding-jumbo-opt/src/formats.c 2015-09-16 02:44:59 +0000 @@ -1562,7 +1562,7 @@ int fmt_default_binary_hash_5(void * bin int fmt_default_binary_hash_6(void * binary) { - return *(ARCH_WORD_32 *) binary & 0x7FFFFFF; + return *(ARCH_WORD_32 *) binary & (PASSWORD_HASH_SIZE_6 - 1); } int fmt_default_salt_hash(void *salt) diff -urp bleeding-jumbo-opt5/src/params.h bleeding-jumbo-opt/src/params.h --- bleeding-jumbo-opt5/src/params.h 2015-09-16 02:03:05 +0000 +++ bleeding-jumbo-opt/src/params.h 2015-09-16 03:02:18 +0000 @@ -208,7 +208,7 @@ #define PASSWORD_HASH_SIZE_3 0x10000 #define PASSWORD_HASH_SIZE_4 0x100000 #define PASSWORD_HASH_SIZE_5 0x1000000 -#define PASSWORD_HASH_SIZE_6 0x8000000 +#define PASSWORD_HASH_SIZE_6 0x40000000 /* * Password hash table thresholds. These are the counts of entries required @@ -237,9 +237,9 @@ extern unsigned int password_hash_thresh * 64-bit pointers, respectively. */ #if ARCH_BITS >= 64 -#define PASSWORD_HASH_SHR 0 +#define PASSWORD_HASH_SHR 3 #else -#define PASSWORD_HASH_SHR 2 +#define PASSWORD_HASH_SHR 3 #endif /* diff -urp bleeding-jumbo-opt5/src/rawMD5_fmt_plug.c bleeding-jumbo-opt/src/rawMD5_fmt_plug.c --- bleeding-jumbo-opt5/src/rawMD5_fmt_plug.c 2015-09-15 00:00:46 +0000 +++ bleeding-jumbo-opt/src/rawMD5_fmt_plug.c 2015-09-16 03:18:49 +0000 @@ -121,6 +121,8 @@ static void init(struct fmt_main *self) self->params.min_keys_per_crypt *= omp_t; omp_t *= OMP_SCALE; self->params.max_keys_per_crypt *= omp_t; +#else + self->params.max_keys_per_crypt *= 5; #endif #ifndef SIMD_COEF_32 saved_len = mem_calloc(self->params.max_keys_per_crypt, @@ -329,13 +331,12 @@ static int crypt_all(int *pcount, struct const int count = *pcount; int index = 0; -#ifdef _OPENMP int loops = (count + MAX_KEYS_PER_CRYPT - 1) / MAX_KEYS_PER_CRYPT; +#ifdef _OPENMP #pragma omp parallel for - for (index = 0; index < loops; index++) #endif - { + for (index = 0; index < loops; index++) { #if SIMD_COEF_32 SIMDmd5body(saved_key[index], crypt_key[index], NULL, SSEi_REVERSE_STEPS | SSEi_MIXED_IN); #else @@ -351,7 +352,7 @@ static int crypt_all(int *pcount, struct static int cmp_all(void *binary, int count) { #ifdef SIMD_COEF_32 unsigned int x, y; -#ifdef _OPENMP +#if 1 const unsigned int c = (count + SIMD_COEF_32 - 1) / SIMD_COEF_32; #else const unsigned int c = SIMD_PARA_MD5; @@ -366,7 +367,7 @@ static int cmp_all(void *binary, int cou #else unsigned int index = 0; -#ifdef _OPENMP +#if 1 for (index = 0; index < count; index++) #endif if (!memcmp(binary, crypt_key[index], BINARY_SIZE)) @@ -414,7 +415,7 @@ static int get_hash_2(int index) { retur static int get_hash_3(int index) { return ((ARCH_WORD_32*)crypt_key)[SIMD_INDEX] & 0xffff; } static int get_hash_4(int index) { return ((ARCH_WORD_32*)crypt_key)[SIMD_INDEX] & 0xfffff; } static int get_hash_5(int index) { return ((ARCH_WORD_32*)crypt_key)[SIMD_INDEX] & 0xffffff; } -static int get_hash_6(int index) { return ((ARCH_WORD_32*)crypt_key)[SIMD_INDEX] & 0x7ffffff; } +static int get_hash_6(int index) { return ((ARCH_WORD_32*)crypt_key)[SIMD_INDEX] & (PASSWORD_HASH_SIZE_6 - 1); } #else static int get_hash_0(int index) { return ((ARCH_WORD_32*)crypt_key)[index] & 0xf; } static int get_hash_1(int index) { return ((ARCH_WORD_32*)crypt_key)[index] & 0xff; } @@ -422,7 +423,7 @@ static int get_hash_2(int index) { retur static int get_hash_3(int index) { return ((ARCH_WORD_32*)crypt_key)[index] & 0xffff; } static int get_hash_4(int index) { return ((ARCH_WORD_32*)crypt_key)[index] & 0xfffff; } static int get_hash_5(int index) { return ((ARCH_WORD_32*)crypt_key)[index] & 0xffffff; } -static int get_hash_6(int index) { return ((ARCH_WORD_32*)crypt_key)[index] & 0x7ffffff; } +static int get_hash_6(int index) { return ((ARCH_WORD_32*)crypt_key)[index] & (PASSWORD_HASH_SIZE_6 - 1); } #endif struct fmt_main fmt_rawMD5 = {