#include #include #include void main(int argc, char *argv[]) { char buffer[32768], pwd[256]; unsigned int d, p, size; FILE *fin, *fout; if (argc != 3) { puts("PWD 変換するファイル名 パスワード"); return; } if ((fin = fopen(argv[1], "rb")) == NULL) { printf("エラー %s をオープンできません。\n", argv[1]); return; } if ((fout = fopen("TEMPFILE.PWD", "wb")) == NULL) { puts("エラー TEMPFILE.PWD を作成できません。"); fclose(fin); return; } strcpy(pwd, argv[2]); while (!feof(fin)) { size = fread(buffer, 1, (unsigned int) 32768, fin); p = -1; while (pwd[++p]) { srand(pwd[p] + p); for (d = 0; d < size; d++) buffer[d] ^= (rand() & 0xFF); } fwrite(buffer, 1, size, fout); } fclose(fin); fclose(fout); remove(argv[1]); rename("TEMPFILE.PWD", argv[1]); puts("変換終了"); }