Die Funktioniert auch.
Aber irgendwann mitten in der File hört die Entschlüsselung auf, und alles was dahinter ist bleibt verschlüsselt.
Vielleicht findet jemand von euch das Problem Q_Q
Habe alle möglichen Checks eingebaut, aber ich komm dem Problem nicht auf die Schliche.
EDIT: Wenn ich die Datei da wo die entschlüsselung aufhört cutte, und erneut in den decrypter haue, entschlüsselt er den rest richtig.
Also versteh ich echt nicht was das Problem ist.
PHP Code:
extern "C" __declspec(dllexport) void __cdecl DESDecrypt(LPCSTR Input, LPCSTR Output)
{
CryptAcquireContext(&hProvDes, NULL, MS_ENHANCED_PROV, PROV_RSA_FULL, CRYPT_VERIFYCONTEXT);
CryptImportKey(hProvDes, DesKeyBlob, sizeof(DesKeyBlob), 0, CRYPT_EXPORTABLE, &hKeyDes);
FILE *File;
long Size;
char *mBuffer;
unsigned long bufferlen = 8;
File = fopen(Input, "rb");
fseek(File, 0, SEEK_END);
Size = ftell(File);
rewind(File);
mBuffer = (char*)malloc(sizeof(char) * Size);
fread(mBuffer, 1, Size, File);
fclose(File);
for(DWORD i = 0; i < Size; i += 8)
{
CryptDecrypt(hKeyDes, NULL, TRUE, 0, (BYTE*)mBuffer+i, &bufferlen);
}
FILE* Result = fopen(Output, "wb+");
fwrite(mBuffer, 1, Size, Result);
}
EDIT: Habs gefunden. Das Problem war, dass bufferlen von der CryptDecrypt funktion verändert wurde, und somit nicht mehr richtig ver/entschlüsselt hat.
Ein Const reicht um das Problem zu fixxen.