Можно ли защитить файл в c? - PullRequest
0 голосов
/ 29 июля 2011

Я написал программу паролей на c.и я сохранил пароль в текстовом файле, используя некоторое шифрование, и извлек старый пароль из файла, используя методы дешифрования, чтобы пользователь не мог видеть пароль. Да, это может быть неэффективным способом, потому что у пользователя есть шансудалите текстовый файл.

Но все же я хочу заблокировать (защитить) файл, используя мой код пароля c. Я искал в Google и обнаружил, что perl можно использовать для блокировки файла. Вопрос в том, возможно ли это вс?У нас есть какая-нибудь функция, например, flock в perl?или предложите мне некоторые функции, которые могут быть полезны для разработки функции блокировки файлов в c.becuase. Люди могут сказать, что у нас есть c # и много других вещей для блокировки файла, и почему вы придерживаетесь c?но мне нравится бросать вызов вещам. Поэтому, пожалуйста, дайте мне знать, если есть кое-что, что мне нужно выучить. Спасибо заранее.

Ответы [ 3 ]

2 голосов
/ 29 июля 2011

В системе POSIX можно использовать fcntl() вместе со значением F_SETLK для аргумента команды, а затем установить F_WRLCK (т. Е. И эксклюзивную блокировку) в struct flock элементе данных l_type.

Так, например (добавьте свои собственные механизмы обнаружения ошибок):

#include <fcntl.h>
#include <unistd.h>

struct flock fl;
int file_descriptor;
int file_length;

fd = open("my_password_file", O_RDWR);

//... get the length of the file and set the variable file_length

fl.l_type = F_WRLCK;
fl.l_whence = SEEK_SET;
fl.l_start = 0;
fl.l_len = file_length;

//set the exclusive-lock on the file
fcntl(fd, F_SETLK, &fl);
1 голос
/ 29 июля 2011

http://linux.die.net/man/2/flock

Чего вы хотите достичь с flock? flock или любой другой вид блокировки файлов не помешает пользователю удалить файл. Возможно, он не сможет сделать это во время работы вашей программы, но как только ваша программа завершит работу, все блокировки будут сняты.

flock используется для получения некоторой исключительной прав доступа к файлу во время операции ввода-вывода.

НТН

Mario

0 голосов
/ 29 июля 2011

В Windows я мог бы использовать Process Explorer или Handle , чтобы закрыть дескриптор из-под вашей программы. Поэтому, даже если бы вы могли это сделать, кто-то другой мог бы отменить это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...