boypush
@boypush
Geek

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

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

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

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

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

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

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

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

Войти через центр авторизации
Похожие вопросы