24f0b000dc
Files correlati : dninst.txt Ricompilazione Demo : [ ] Commento : Aggiunto dninst.txt, da cifrare in dninst.zip con dncrypt.exe git-svn-id: svn://10.65.10.50/trunk@19866 c028cbd2-c16b-5b4b-a496-9718f37d4682
104 lines
1.8 KiB
C++
Executable File
104 lines
1.8 KiB
C++
Executable File
#include <iostream>
|
|
#include <fstream>
|
|
|
|
using namespace std;
|
|
|
|
const size_t MAXLINE = 256;
|
|
|
|
void init_key(char key[8])
|
|
{
|
|
for (size_t i = 0; i < 8; i++)
|
|
key[i] = 'A' + ::rand() % 26;
|
|
}
|
|
|
|
bool encode_string(const char* linein, char lineout[MAXLINE])
|
|
{
|
|
memset(lineout, 0, MAXLINE);
|
|
if (linein && *linein)
|
|
{
|
|
char key[8]; init_key(key);
|
|
size_t i;
|
|
for (i = 0; linein[i]; i++)
|
|
lineout[i] = linein[i] + (i < 8 ? key[i] : linein[i - 8]);
|
|
lineout[i] = '\0';
|
|
}
|
|
return *lineout >= ' ';
|
|
}
|
|
|
|
bool read_line(istream& txt, char line[MAXLINE])
|
|
{
|
|
memset(line, 0, MAXLINE);
|
|
while (!txt.eof())
|
|
{
|
|
txt.getline(line, MAXLINE-1);
|
|
|
|
if (line[0] == '/' && line[1] == '/')
|
|
continue;
|
|
|
|
for (size_t i = 0; line[i]; i++)
|
|
{
|
|
if (line[i] > ' ')
|
|
return true;
|
|
}
|
|
}
|
|
return false;
|
|
}
|
|
|
|
bool write_line(ostream& zip, const char* line)
|
|
{
|
|
bool ok = line && *line;
|
|
if (ok)
|
|
{
|
|
while (*line && *line <= ' ')
|
|
line++;
|
|
ok = *line > ' ';
|
|
if (ok)
|
|
{
|
|
char lineout[MAXLINE];
|
|
encode_string(line, lineout);
|
|
zip << lineout << endl;
|
|
}
|
|
}
|
|
return ok;
|
|
}
|
|
|
|
/* May be useful at least once
|
|
bool write_paragraph(ostream& zip, const char* line)
|
|
{
|
|
bool ok = line && *line;
|
|
if (ok)
|
|
zip << '[' << line << ']' << endl;
|
|
return ok;
|
|
}
|
|
*/
|
|
|
|
int main(int argc, char* argv[])
|
|
{
|
|
if (argc <= 1)
|
|
{
|
|
cerr << "Missing input file (dninst.txt)" << endl;
|
|
return 1;
|
|
}
|
|
if (argc <= 2)
|
|
{
|
|
cerr << "Missing output file (dninst.zip)" << endl;
|
|
return 2;
|
|
}
|
|
cerr << "Encoding " << argv[1] << " ..." << endl;
|
|
|
|
ifstream txt(argv[1]);
|
|
ofstream zip(argv[2]);
|
|
char line[MAXLINE];
|
|
|
|
read_line(txt, line);
|
|
::srand(883);
|
|
write_line(zip, line);
|
|
::srand(atoi(line));
|
|
while (read_line(txt, line))
|
|
write_line(zip, line);
|
|
|
|
cerr << "Encoded " << argv[2] << endl;
|
|
|
|
return 0;
|
|
}
|