PhraseSet.FillPhraseSet moved out to unmanaged code

master
Inga 🏳‍🌈 7 years ago
parent 9866d8ef7f
commit bb22805cbc
  1. 14
      dotnet/WhiteRabbit.UnmanagedBridge/WhiteRabbit.UnmanagedBridge.cpp
  2. 4
      dotnet/WhiteRabbit.UnmanagedBridge/WhiteRabbit.UnmanagedBridge.h
  3. 1
      dotnet/WhiteRabbit.UnmanagedBridge/WhiteRabbit.UnmanagedBridge.vcxproj
  4. 3
      dotnet/WhiteRabbit.UnmanagedBridge/constants.h

@ -28,10 +28,10 @@ void WhiteRabbitUnmanagedBridge::MD5Unmanaged::ComputeMD5(unsigned __int32 * inp
void WhiteRabbitUnmanagedBridge::MD5Unmanaged::FillPhraseSet(__int64* bufferPointer, __int64* allWordsPointer, __int32* wordIndexes, unsigned __int64* permutationsPointer, int permutationOffset, int numberOfCharacters, int numberOfWords) void WhiteRabbitUnmanagedBridge::MD5Unmanaged::FillPhraseSet(__int64* bufferPointer, __int64* allWordsPointer, __int32* wordIndexes, unsigned __int64* permutationsPointer, int permutationOffset, int numberOfCharacters, int numberOfWords)
{ {
long* longBuffer = (long*)bufferPointer; __int64* longBuffer = (__int64*)bufferPointer;
auto currentPermutationPointer = permutationsPointer + permutationOffset; auto currentPermutationPointer = permutationsPointer + permutationOffset;
for (auto i = 0; i < WhiteRabbitUnmanagedBridge::MD5Unmanaged::PhrasesPerSet; i++, currentPermutationPointer++) for (auto i = 0; i < PHRASES_PER_SET; i++, currentPermutationPointer++)
{ {
auto permutation = *currentPermutationPointer; auto permutation = *currentPermutationPointer;
if (permutation == 0) if (permutation == 0)
@ -48,7 +48,7 @@ void WhiteRabbitUnmanagedBridge::MD5Unmanaged::FillPhraseSet(__int64* bufferPoin
longBuffer[1] |= currentWord[cumulativeWordOffsetX4 + 1]; longBuffer[1] |= currentWord[cumulativeWordOffsetX4 + 1];
longBuffer[2] ^= currentWord[cumulativeWordOffsetX4 + 2]; longBuffer[2] ^= currentWord[cumulativeWordOffsetX4 + 2];
longBuffer[3] ^= currentWord[cumulativeWordOffsetX4 + 3]; longBuffer[3] ^= currentWord[cumulativeWordOffsetX4 + 3];
cumulativeWordOffsetX4 += (int)currentWord[127]; cumulativeWordOffsetX4 += (__int32)currentWord[127];
} }
longBuffer += 4; longBuffer += 4;
@ -56,15 +56,15 @@ void WhiteRabbitUnmanagedBridge::MD5Unmanaged::FillPhraseSet(__int64* bufferPoin
auto length = numberOfCharacters + numberOfWords - 1; auto length = numberOfCharacters + numberOfWords - 1;
unsigned char* byteBuffer = ((unsigned char*)bufferPointer) + length; unsigned char* byteBuffer = ((unsigned char*)bufferPointer) + length;
for (auto i = 0; i < WhiteRabbitUnmanagedBridge::MD5Unmanaged::PhrasesPerSet; i++) for (auto i = 0; i < PHRASES_PER_SET; i++)
{ {
*byteBuffer = 128; *byteBuffer = 128;
byteBuffer += 32; byteBuffer += 32;
} }
auto lengthInBits = (unsigned int)(length << 3); auto lengthInBits = (unsigned __int32)(length << 3);
unsigned int* uintBuffer = ((unsigned int*)bufferPointer) + 7; unsigned int* uintBuffer = ((unsigned __int32*)bufferPointer) + 7;
for (auto i = 0; i < WhiteRabbitUnmanagedBridge::MD5Unmanaged::PhrasesPerSet; i++) for (auto i = 0; i < PHRASES_PER_SET; i++)
{ {
*uintBuffer = lengthInBits; *uintBuffer = lengthInBits;
uintBuffer += 8; uintBuffer += 8;

@ -2,6 +2,8 @@
#pragma once #pragma once
#include "constants.h"
using namespace System; using namespace System;
namespace WhiteRabbitUnmanagedBridge { namespace WhiteRabbitUnmanagedBridge {
@ -9,7 +11,7 @@ namespace WhiteRabbitUnmanagedBridge {
public ref class MD5Unmanaged public ref class MD5Unmanaged
{ {
public: public:
literal int PhrasesPerSet = 16; literal int PhrasesPerSet = PHRASES_PER_SET;
static void ComputeMD5(unsigned int* input, unsigned int* output); static void ComputeMD5(unsigned int* input, unsigned int* output);
static void FillPhraseSet(__int64* bufferPointer, __int64* allWordsPointer, __int32* wordIndexes, unsigned __int64* permutationsPointer, int permutationOffset, int numberOfCharacters, int numberOfWords); static void FillPhraseSet(__int64* bufferPointer, __int64* allWordsPointer, __int32* wordIndexes, unsigned __int64* permutationsPointer, int permutationOffset, int numberOfCharacters, int numberOfWords);
}; };

@ -133,6 +133,7 @@
</Link> </Link>
</ItemDefinitionGroup> </ItemDefinitionGroup>
<ItemGroup> <ItemGroup>
<ClInclude Include="constants.h" />
<ClInclude Include="md5.h" /> <ClInclude Include="md5.h" />
<ClInclude Include="resource.h" /> <ClInclude Include="resource.h" />
<ClInclude Include="Stdafx.h" /> <ClInclude Include="Stdafx.h" />

@ -0,0 +1,3 @@
#pragma once
#define PHRASES_PER_SET 16
Loading…
Cancel
Save