I'm making a enciphering/deciphering program using XTEA algorithm. The encipher/decipher functions work fine, but when I encipher a file and then decipher it, I get some extra characters in the end of the file:
--- Original file ---
QwertY
--- Encrypted file ---
»¦æŸS@±
--- Deciphered from encrypted ---
QwertY  ß*tÞÇ
I have no idea why the " ß*tÞÇ" appears in the end. I will post some of my code, but not all of it since it would be too long. The encipher/decipher function takes 64 bits data and 128 bits key, and encipher/decipher the data to the same block size, which is again 64 bits (similar functions here). It can then be written to a new file.
    long data[2]; // 64bits
    ZeroMemory(data, sizeof(long)*2);
    char password[16];
    ZeroMemory(password, sizeof(char)*16);
    long *key;
    if(argc > 1)
    {
        string originalpath = argv[1];
        string finalpath;
        string eextension = "XTEA";
        string extension = GetFileExtension(originalpath);
        bool encipherfile = 1;
        if(extension.compare(eextension) == 0) // If extensions are equal, dont encipher file
        {
            encipherfile = 0;
            finalpath = originalpath;
            finalpath.erase(finalpath.length()-5, finalpath.length());
        }
        ifstream in(originalpath, ios::binary);
        ofstream out(finalpath, ios::binary);
        cout << "Password:" << endl;
        cin.get(password,sizeof(password));
        key = reinterpret_cast<long *>(password);
        while(!in.eof())
        {
            ZeroMemory(data, sizeof(long)*2);
            in.read(reinterpret_cast<char*>(&data), sizeof(long)*2); // Read 64bits from file
            if(encipherfile == 1)
            {
                encipher(data, key);
                out.write(reinterpret_cast<char*>(&data), sizeof(data));
                continue;
            }
            if(encipherfile == 0)
            {
                decipher(data, key);
                out.write(reinterpret_cast<char*>(&data), sizeof(data));
            }
        }
 
    