タイムパッドの暗号化を使用して2つのファイルをXORするプログラムがあります。キーファイルはそのような敏感な性質のものなので、私はキーファイルの痕跡をコンピュータのハードドライブに表示してセキュリティを脅かすことは望んでいません。C - RAMでプログラムを実行する
質問は、HDに残っている痕跡を避けるために、プログラムをRAMでどのように実行するのですか?または、フラッシュドライブからプログラムを実行すると、キーファイルのトレースがフラッシュドライブに含まれますか?以下は
は、キーファイルをプログラムで処理する方法である。これをグーグルで、それは私が必要なものであるように思われなかったとき、私はinram
機能に出くわした
/* 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);
。
ありがとうございました!それはまさに私が必要としているようです。あなたの前提はかなり正しい。 – youjustreadthis
もう一度、私は最近別のスレッドを持っています:http://stackoverflow.com/questions/12990214/is-this-usage-of-mlockall-correct#12990658そしてあなたが抱いていることと矛盾するような混乱した答えがありましたここに言った。おそらく見て、答えにあなたの意見を与えることができますか? @Geoff Reedy – youjustreadthis