1

Тема: С99. Шифрування файлів (без бібліотек).

Що скажете про цю реалізацію шифрування?
Знаю що скажете ліпше використовувати бібліотеки які написані розумними дядьками, але мені хотілося дізнатися чи ця програмка може служити простим прикладом шифрування.
Можете сказати чи не є зайвим вказання класу пам'яті auto?

#include <stdio.h>
#include <string.h>


int code(char *path, char *to, char *c){

        auto FILE *from_file;
        auto FILE *to_file;

        auto unsigned short length;
        auto int n;
        auto int pos = 0;

        length = strlen(c) + 1;

        from_file = fopen(path, "rb");
        to_file = fopen(to, "wb");

        printf("Шифрування...\n");
        while((n = fgetc(from_file)) != EOF){

                if (length == pos)
                {
                    pos = 0;
                }

                fputc((n + ((int)(c[pos]) - pos)), to_file);

                pos++;
        }

        fclose(from_file);
        fclose(to_file);

    return 0;
}

int main(int *argc, char *argv) {
    char *key = "lazarustarasgooglelinux";

    int ok = code("/home/lazarus/pics_161.pdf", "/home/lazarus/code", key);

    printf("%s\n", ok == 0 ? "Готово." : "Помилка." );

    return 0;
}

2

Re: С99. Шифрування файлів (без бібліотек).

Дивіться, у вас n має тип int (4 байти), а с[pos] буде мати тип char (1 байт) бо Ви його так читаєте.
Маємо наступну ситуацію, наприклад
коли n буде мати 000000FEh та
с[pos] буде мати FСh, що буде на виході? і як воно запише в пам'ять?

Прихований текст

правильно переповниться і запише один байт, або затре щось.

Короче розшифрувати то буде принципово неможливо.
Раджу почитати про xor
Майже то саме, тільки без збочень.

І так, xor шифрування достатньо криптостійке, при довжині ключа рівному довжині даних, що шифруються.

Подякували: shabaranskij, LoganRoss2

3 Востаннє редагувалося shabaranskij (07.07.2017 03:49:47)

Re: С99. Шифрування файлів (без бібліотек).

типу так?

fputc(n ^ c[pos], to_file);

чи ще можна і так?

fputc(n ^ c[pos] ^ pos, to_file);

може порадите якусь хорошу книжку по криптографії, просто хочу знати як воно працює і як можна, а як ні.

p.s. Після тих вірусів шифрувальників стало цікаво як відбувається шифрування

4

Re: С99. Шифрування файлів (без бібліотек).

Ми порадити можемо(там в темі є потрібна вам відповідь), тіки ви її не прочитаєте.
Стилістика коду така, що гидко дивитися - уживається виключно сішна рантайм бібліотека, її підключення робиться теж виключно як для сі(в плюсах пишуть для підключенні сішної рантайм бібліотеки не <stdio.h> а <cstdio>), ще якесь auto наче з неба впало на сішні джерельні коди

5

Re: С99. Шифрування файлів (без бібліотек).

0xDADA11C7 написав:

Ми порадити можемо(там в темі є потрібна вам відповідь), тіки ви її не прочитаєте.
Стилістика коду така, що гидко дивитися - уживається виключно сішна рантайм бібліотека, її підключення робиться теж виключно як для сі(в плюсах пишуть для підключенні сішної рантайм бібліотеки не <stdio.h> а <cstdio>), ще якесь auto наче з неба впало на сішні джерельні коди

Чи я вас неправильно зрозумів чи ви мене, але я вказав в темі що чиста сішка без плюсів.

Це я вичитав в книжці Стівена Прата

Прихований текст

Ключевое слово auto является спе-цификатором
класса памяти.
О бласть видимости в пределах блока и отсутствие связывания говорит о том , что
только в блоке, где определена переменная , может осуществляться доступ к этой пе
ременной по имени.

подумав що можна і в цьому прикладі використати auto.

Можете вказати що не так з стилістикою?

Подякували: 0xDADA11C71

6 Востаннє редагувалося 0x9111A (07.07.2017 13:13:11)

Re: С99. Шифрування файлів (без бібліотек).

Не так те, що цей auto нічого не робить, без нього поведінка така сама, тому ним не користуються
Не плутайте з С++, де auto має зовсім інше значення

+ не забувайте перевіряти чи файл відкрився

Подякували: shabaranskij, LoganRoss2

7 Востаннє редагувалося shabaranskij (07.07.2017 13:19:33)

Re: С99. Шифрування файлів (без бібліотек).

0x9111A написав:

Не так те, що цей auto нічого не робить, без нього поведінка така сама, тому ним не користуються
Не плутайте з С++, де auto має зовсім інше значення

+ не забувайте перевіряти чи файл відкрився

дякую, на рахунок auto вже зрозумів, а от перевірку таки забув зробити)

Подякували: 0x9111A1

8

Re: С99. Шифрування файлів (без бібліотек).

Я взагалі не знав про auto в чистих сях, дякую