⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 jtxor.cpp

📁 程序使用C++展示相当强的XOR加密。 当它unencrypting文件时
💻 CPP
字号:
#include <iostream>	//cin & cout#include <fstream>	//ifstream and ostream	#include <string>	//string class#include <cstdlib>	//exit, system, strtolusing namespace std;/*xorcrypt.cpp by James Turk (cozman)Wednesday January 9th, 2002 (11:56PM EST)Program Uses C++ to Demonstrate A Fairly Strong XOR Encryption.Includes EOF error checking and automatic detection of when it is unencrypting a file.Program Is Documented Well And Also Makes Good Use of the Built In String Class.Checked by Custom Syntax Checker To Conform to Current C++ Standard.Submitted to codejournal@cprogramming.com for Contest. (jturk@conceptofzero.com)Program Is Dedicated to The greatest girl ever, Julia I Love you!Program Compiles Error and Warning Free:	g++ -o xorcrypt.exe xorcrypt.cpp [-Wall] [-O2]	[] flags are optional*/char xorcrypt(char ch, long key) //function to return a character XOR'ed by a long key{	return ch ^ key;	//return ch XOR'ed by key}void error(void) //function to output error message and terminate{	cout << endl << "Fatal Error Occured, try a different key for this file." << endl;	exit(EXIT_FAILURE);}int main(int argc, char *argv[]){	ifstream inf;	//input file variable	ofstream outf;	//output file variable	unsigned loc;	//location in string used for searching	string fn;		//string for filename	long key;		//stores key for program	char tmp;		//variable to hold character read from input file		if(argc == 3)	//if two command line args were passed	{		fn = argv[1];					//parse first command line element as original filename		key = strtol(argv[2],NULL,0);	//parse second command line element as long key				inf.open(fn.c_str());			//open input file	}	else	{		cout << endl << "Please Enter Encryption Key: ";	//prompt user for encryption key		cin >> key;											//get key from cin	}			while(!inf.is_open()) //while either of the files isn't properly open	{		cout << endl << "Please Enter Valid Filename To xOr-Crypt: ";	//prompt user for a filename		cin >> fn;				//take fn_orig from cin		inf.open(fn.c_str());	//open input file	}		loc = fn.find(".enc");		//check if file already contains .enc extension	if(loc != string::npos)		//if it is found--	{		fn.replace(loc,4,".orig");	// --replace last .enc with .orig	}	else	{		fn += ".enc";				//encrypted name is same as original plus .enc	}	outf.open(fn.c_str());			//open output file		while(inf) //while input file hasn't reached EOF	{		inf.get(tmp); 	//get the next character		if(inf)			//if file is still not at EOF		{			if(xorcrypt(tmp,key) != EOF)		//as long as the char encrypted by the key isn't illegal			{				outf.put(xorcrypt(tmp,key));	//place encrypted char into output file			}			else			{				inf.close();		//close input file				outf.close();		//close output file				fn = "del " + fn;	//add "del " to beginning of current filename				system(fn.c_str());	//execute delete command				error(); 			//report error and exit			}		}	}		inf.close();	//close input file	outf.close();	//close output file		return 0;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -