NetVision-Technik

NetVision-Technik (http://www.netvision-technik.de/forum/index.php)
-   C / C++ (http://www.netvision-technik.de/forum/forumdisplay.php?f=59)
-   -   CCrypto (http://www.netvision-technik.de/forum/showthread.php?t=2950)

Bluesteel 11.03.2009 11:32

CCrypto
 
So nun hier wieder etwas für alle
Verschlüsselungs-Erweiterung für CNetConn

also fangen wir mal an^^
datei namens crypto.h

Code:

/*

Cryptography extensions for CNetConn

Currently only implements simple XOR encoding



Dependencies: CString




*/



#ifndef _CRYPTO_H_INC_

#define _CRYPTO_H_INC_



#include <windows.h>

#include "string.h"





#define CRYPT_NONE      0

#define CRYPT_XOR      1



#define CRYPT_STD_KEY  "A"





/*

 *  class CCrypto

 *

 *  En/decrypts generic data e.g. for network communication or secure file storage

 *

 */

class CCrypto

{

    public:

        // Main constructor

        // Initializes class and some variables

        CCrypto();



        // Main destructor

        // Frees memory and terminates app

        ~CCrypto();



        int SetMethod(int iMethod);



        CString Encrypt(CString strData);

        CString Decrypt(CString strData);



        CString EncryptXOR(CString, CString);

        CString DecryptXOR(CString, CString);



    private:

        int m_iMethod;

};



#endif  // ifdef _CRYPTO_H_INC_

und nun die datei namens crypto.cpp

Code:

/*

Cryptography extensions for CNetConn

Currently only implements simple XOR encoding



Dependencies: CString





*/



#include "crypto.h"



/*

 *  default constructor

 *

 */

CCrypto::CCrypto()

{

    m_iMethod = CRYPT_NONE;

}



CCrypto::~CCrypto()

{

}



int CCrypto::SetMethod(int iMethod)

{

    m_iMethod = iMethod;

    return 0;

}



CString CCrypto::Encrypt(CString strData)

{

    CString strStdKey = CRYPT_STD_KEY;



    switch (m_iMethod)

    {

        case CRYPT_NONE:

            return strData;



        case CRYPT_XOR:

            return EncryptXOR(strData, strStdKey);



        default:

            return strData;

    }

}



CString CCrypto::Decrypt(CString strData)

{

    CString strStdKey = CRYPT_STD_KEY;



    switch (m_iMethod)

    {

        case CRYPT_NONE:

            return strData;



        case CRYPT_XOR:

            return DecryptXOR(strData, strStdKey);



        default:

            return strData;

    }

}



CString CCrypto::EncryptXOR(CString strData, CString strKey)

{

    CString strOut;

    int iPos;

    int iKeyPos = 0;

    int iLen = strData.GetLength();

    int iKeyLen = strKey.GetLength();



    if (!iKeyLen || !iLen) return strOut;  // return empty string if data or key is empty



    for (iPos = 0; iPos < iLen; iPos++)

    {

        strOut += strData[iPos] ^ strKey[iKeyPos++];

        if (iKeyPos >= iKeyLen) iKeyPos = 0;

    }



    return strOut;

}



CString CCrypto::DecryptXOR(CString strData, CString strKey)

{

    return EncryptXOR(strData, strKey);

}

viel spaß^^


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:06 Uhr.

Powered by vBulletin® Version 3.8.9 (Deutsch)
Copyright ©2000 - 2024, vBulletin Solutions, Inc.