boypush
@boypush
Geek

Как записать значение в файл и зашифровать его на языке C?

Приветствую!
Подскажите пожалуйста, вот я к примеру прибавляю значение на 30 и записываю в файл:
FILE *S1;
int y;
S1 = fopen("wallet.txt", "w");
y += 30;
fprintf(S1, "%d\n", y);
fclose(S1);

Как мне записывать может не в txt а в какой-то другой файл чтобы более менее осведомленный пользователь не смог отредактировать текстовиком или другим редактором и не накрутить себе значение?
И чтобы я знал как прочитать значение если мне пришлют этот файл, спасибо.
  • Вопрос задан
  • 300 просмотров
Решения вопроса 2
wataru
@wataru
Разработчик на С++, экс-олимпиадник.
Открывайте файл в бинарном режиме "wb" и пишите туда через fwrite (лучше побайтово, чтобы не мучиться с переносимостью из-за порядком байтов в int).

Читайте, соответственно, через fread.

Для шифрования лучше всего, во-первых, байты в разном порядке писать, (не 0,1,2,3, а, скажем, 2,0,3,1) и, во-вторых, xor-ить их с какими-то константами. А еще лучше не с константами, а со случайными данными, которые тоже записываются в файл рядом. Или не рядом, так будет закономерность меньше видна.

Но все это может спасти только от людей незнакомых с reverse engineering'ом и отладкой. Более менее осведомленный ползователь посмотрит в ассемблерный код и поймет, что и как там читается и где и что надо поменять. Но да, это посложнее просто редактирования txt файла.

Ну и, artmoney с cheat engine никто не отменял.
Ответ написан
Комментировать
CityCat4
@CityCat4 Куратор тега C
//COPY01 EXEC PGM=IEBGENER
Существует масса различных библиотек с API шифрования, да и простяцкие подстановочные шифры никто не отменял. Ну или вообще топорный вариант - число в текст, записать base64 текста
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@Miron11
Пишу sql 20 лет. Срок :)
тут дело не в си или не си, шифрование данных предполагает наличие не связанного с записью файла канала передачи данных
по-простому люди обходились без компьютеров, чтобы обеспечить те же возможности много-много лет, был гонец
e91220a637c9320f74982.jpg
который был наделен царским вензелем, и все, чо он нес был пароль3a8faaf3192a76791a346ab9021fb6b4.jpeg
прежде, чем что-то шифровать Вам придется понять как Вы перенесете пользователям пароль
для этого вам надо познакомиться с различными схемами шифрования, и по крайней мере одну из них признать достойной доверия
потому, что главной изюминкой различных схем шифрования является именно механизм, устройства контроля и подтверждения доверия шага передачи пароля назначенному получателю
такой вот глубокой проработки без вам больше подойдет записать те самые 30 в файл, и сделать у себя резервную копию этого файла
слать этот файл кому необходимо
а когда файл пришлют назад, и там 100500 позвонить пользователю по телефону и спросить., что долно быть на самом деле.
в данном случае паролем является голос собеседника, за миллионы лет избирательность этого инструмента подтверждения личности собеседника достигла очень высокого совершенства, более того, по интонациям голоса и некоторым жизненным социальным приемам мы, люди, без исключения, наделены способностями выяснить насколько искренен наш собеседник.
ну а если Вы все таки решитесь создать код с цепочкой инструкций кодирующих пошаговое выполнение столь не простой процедуры, то только тогда придет время си или не си
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы