Mam program, który XORs dwa pliki razem za pomocą jednego szyfrowania padu czasu. Ponieważ plik klucza ma tak delikatną naturę, nie chcę, aby na dysku twardym komputera pojawiały się ślady pliku klucza, ponieważ mogłoby to zagrozić bezpieczeństwu.C - Uruchamianie programu w pamięci RAM
Pytanie brzmi, w jaki sposób uruchomić program w pamięci RAM, aby uniknąć pozostawiania śladów na dysku HD? Alternatywnie, czy program z dysku flash będzie zawierał ślady pliku klucza na dysku flash?
Poniżej jest jak keyfile jest traktowany w programie:
/* Check if keyfile can be opened. */
if((keyfile = fopen(argv[3], "rb"))== NULL)
{
printf("Can't open keyfile.\n");
printf("Please enter a valid filename.\n");
printf("USAGE: OTP <source file> <output file> <keyfile>\n");
perror("Error");
return(1);
}
/* Get size of keyfile */
fstat(fileno(keyfile), &keybuf);
/* Check if keyfile is the same size as, or bigger than the sourcefile */
if((keybuf.st_size) < (statbuf.st_size))
{
printf("Source file is larger than keyfile.\n");
printf("This significantly reduces cryptographic strength.\n");
printf("Do you wish to continue? (Y/N)\n");
fgets(buffer, 20, stdin);
sscanf(buffer, "%c", &ans);
if(ans == 'n' || ans == 'N')
{
return (1);
}
if(ans == 'y' || ans == 'Y')
{
printf("Proceeding with Encryption/Decryption.\n");
}
/* Encrypt/Decrypt and write to output file. */
while(count < (statbuf.st_size))
{
key=fgetc(keyfile);
data=fgetc(sourcefile);
output=(key^data);
fputc(output,destfile);
count++;
}
/* Close files. */
fclose(keyfile);
fclose(sourcefile);
fclose(destfile);
natknąłem funkcji inram
podczas googlowania to, ale to nie wydaje się być to, czego potrzebowałem.
Dziękujemy! To wydaje się być dokładnie tym, czego potrzebuję. Twoje założenia były całkiem poprawne. – youjustreadthis
Witam ponownie, mam ostatnio inny wątek: http://stackoverflow.com/questions/12990214/is-this-usage-of-mlockall-correct#12990658 i dostałem mylącą odpowiedź tam, która wydawała się zaprzeczać temu, co masz powiedział tutaj. Czy mógłbyś rzucić okiem i wyrazić swoją opinię na temat odpowiedzi? @Geoff Reedy – youjustreadthis