8.6. “QR9”: RUBIK’S CUBE INSPIRED AMATEUR CRYPTO-ALGORITHM
f=fopen(fin, "rb");if (f==NULL)
{
printf ("Cannot open input file!\n");
return;
};fseek (f, 0, SEEK_END);
flen=ftell (f);
fseek (f, 0, SEEK_SET);flen_aligned=(flen&0xFFFFFFC0)+0x40;buf=(BYTE*)malloc (flen_aligned);
memset (buf, 0, flen_aligned);fread (buf, flen, 1, f);fclose (f);crypt (buf, flen_aligned, pw);f=fopen(fout, "wb");fwrite ("QR9", 3, 1, f);
fwrite (&flen, 4, 1, f);
fwrite (buf, flen_aligned, 1, f);fclose (f);free (buf);};
void decrypt_file(char fin, char fout, char pw)
{
FILE f;
int real_flen, flen;
BYTE *buf;
f=fopen(fin, "rb");if (f==NULL)
{
printf ("Cannot open input file!\n");
return;
};fseek (f, 0, SEEK_END);
flen=ftell (f);
fseek (f, 0, SEEK_SET);buf=(BYTE*)malloc (flen);fread (buf, flen, 1, f);fclose (f);if (memcmp (buf, "QR9", 3)!=0)
{
printf ("File is not encrypted!\n");
return;
};memcpy (&real_flen, buf+3, 4);decrypt (buf+(3+4), flen-(3+4), pw);f=fopen(fout, "wb");