[Çözüldü] Neden düzgün çalışmıyor

Başlatan MetinErsin, 13 Ağustos 2016 - 16:02:21

« önceki - sonraki »

0 Üyeler ve 1 Ziyaretçi konuyu incelemekte.

MetinErsin

Tüm kodu yazmıyorum kod parçası şu:

Kod:
#define BYTE char
FILE *file1 = fopen(argv[3], "r");
                    if(file1)
                    {
                        FILE *file2 = fopen(argv[4], "w");
                        if(file2)
                        {
                            BYTE byte = 0;
                            size_t readed_bytes;
                            do
                            {
                                readed_bytes = fread(&byte, sizeof(BYTE), 1, file1);
                                if(readed_bytes > 0)
                                {
                                    byte ^= password;
                                    fwrite(&byte, sizeof(BYTE), 1, file2);
                                }
                            }
                            while(readed_bytes > 0);
                            fclose(file1);
                            fclose(file2);
                            exit(EXIT_SUCCESS);
                        }

Bu kod ile komut satırından girdiğim dosyaları şifreliyorum xor ile. Ama sorunum şu text dosyalarını falan bu yolla şifrelerken sorun yok ama exe dosyasını bu yolla şifreleyip geri çözdüğüm de bu bu dosya win32 uygulaması değildir diyo. Aynı şey resim dosyaları için de geçerli.
Bunu neden dediğini anlayamadım sonuçta geri çözdüğüm zaman bütün bytelar eskisi ile aynı oluyor. Yani olması gerekir ama *olmuyor nedense.
Şifrelenmeden önceki dosya 100256 byte boyutundaymış. Şifrelendikten sonra boyutu azalıyo. Sonra o şifreli exe yi çözünce daha da azalıyo boyutu. Anlamadım nedendir.


Mesaj tekrarı yüzünden mesajınız birleştirildi. Bu mesajın gönderim tarihi : 13 Ağustos 2016 - 17:50:40

Hatanın neden kaynaklandığını buldum. Hata şuymuş.
Dosyaları binary formatta açmadığım için dosyayı okurken \0 karakterine kadar okuyormuş. Yazarken de \n karakterini \r karakterine dönüştürmemiz gerekiryormuş.
Bunun windows a özel olduğunu belirteyim. Unix sistemlerinde böyle bir şey yokmuş.