5
我有一個程序使用一次性時間片加密將兩個文件異或。由於密鑰文件具有這種敏感特性,因此我不希望密鑰文件的任何痕跡出現在計算機硬盤驅動器上,因爲這可能會危及安全性。C - 在RAM中運行程序
問題是,如何在RAM中運行程序以避免在HD上留下任何痕跡?或者,從閃存驅動器運行該程序是否包含密鑰文件到閃存驅動器的痕跡?
下面是密鑰文件是如何在程序處理:
/* 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);
我讀到一篇inram
功能谷歌搜索這個時候,但這似乎並沒有爲我需要什麼來。
謝謝!這似乎正是我需要的。你的假設是非常正確的。 – youjustreadthis
嗨,再次,我最近的另一個線程:http://stackoverflow.com/questions/12990214/is-this-usage-of-mlockall-correct#12990658並得到了一個令人困惑的答案那裏,似乎與你有什麼矛盾在這裏說。你可能會看看並給出你的意見的答案? @Geoff Reedy – youjustreadthis