Verschlüsselung von Dateien



  • Kompiliert normal aber in dieser Zeile schmeißt es ihn raus !

    Was heisst das? Runtime Error, Linker Error? Exceptions?



  • Fehler:

    Run-Time Check Failure #0 - The value of ESP was not properly saved across a function call. This is usually a result of calling a function declared with one calling convention with a function pointer declared with a different calling convention.

    mfg



  • Anscheinend hab ich mit dieser conversation Probleme:

    Methoden Parameter

    void ScrambleFile::EncryptXmlFile(string &input_filename, string &output_filename)
    

    und dann diese Zeile

    dw = lpKcEncryptFile(TRUE, input_filename.c_str(), output_filename.c_str(), "TheKey");
    

    Danke und mfg



  • Zeige mal mehr Code.



  • #include "ScrambleFile.h"
    
    #define KCF_NODECL
    
    HINSTANCE hLib;
    LPKCENCRYPTFILE lpKcEncryptFile;
    LPKCSELFTEST lpKcSelfTest;
    DWORD dw;
    
    ScrambleFile::ScrambleFile(void)
    {
    }
    
    ScrambleFile::~ScrambleFile(void)
    {
    }
    
    void ScrambleFile::EncryptXmlFile(string &input_filename, string &output_filename)
    {
    	hLib = LoadLibrary("H:/Projekt/source/MP300_TestSuite/debug/KeeCryptLib.dll");
    	if(hLib == NULL) cout << "Error: Cannot load KeeCrypt.dll library ! " << endl;
    
    	lpKcEncryptFile = (LPKCENCRYPTFILE)GetProcAddress(hLib, "KcEncryptFile");	
    
    	dw = lpKcEncryptFile(TRUE, input_filename.c_str(), output_filename.c_str(), "TheKey");
    
    	cout << "ScrambleFile Method " << input_filename << " " << output_filename << endl;
    
    	FreeLibrary(hLib); 
    	hLib = NULL;
    }
    


  • Es müsste allerdings ein dll Fehler sein (hab aber die dll vorher problemlos im eigenen VS2005 kompiliert) !



  • Hast Du LPKCENCRYPTFILE selbst definiert?
    Wie ist er definiert?



  • typedef DWORD(WINAPI *LPKCENCRYPTFILE)(BOOL bEncrypt, LPCTSTR lpInFile, LPCTSTR lpOutFile, LPCTSTR lpPassword);
    typedef DWORD(WINAPI *LPKCSELFTEST)();
    

    Wurde in der keecryptlib.h definiert (in ScrambleFile.h eingebunden)



  • Die 2 Zeilen

    typedef DWORD(WINAPI *LPKCENCRYPTFILE)(BOOL bEncrypt, LPCTSTR lpInFile, LPCTSTR lpOutFile, LPCTSTR lpPassword);
    typedef DWORD(WINAPI *LPKCSELFTEST)();
    

    mussten laut windef.h in

    typedef DWORD(WINAPIV *LPKCENCRYPTFILE)(BOOL bEncrypt, LPCTSTR lpInFile, LPCTSTR lpOutFile, LPCTSTR lpPassword);
    typedef DWORD(WINAPIV *LPKCSELFTEST)();
    

    geändert werden.

    Auszug:

    #define CALLBACK    __stdcall
    #define WINAPI      __stdcall
    #define WINAPIV     __cdecl
    

    Blöder Fehler - Danke trotzdem für die Hilfe !

    mfg



  • Hallo !

    Ausgehend vom vorherigen Verlauf möchte ich nun die entschlüsselte Datei nicht aufs Dateisystem schreiben sondern in einen Datenstrom (filestream) !

    hier wird entschlüsselt:

    dw = lpKcEncryptFile(FALSE, input_filename.c_str(), output_filename.c_str(), encKey.c_str());
    

    output_filename.c_str() wäre der Pfad zur Datei die dann entschlüsselt geschrieben wird -> möchte ich aber wie gesagt in ein Objekt kapseln ! nur wie ?

    Vielen Dank für Antworten !

    mfg


Anmelden zum Antworten