I thought this would be a good read for any people new to C++. I have made a simple xor encryption program to encrypt simple oneline messages.
I kept it as simple as possible so people new to C++ might could learn something from it. Then again as my programming skills arent exectly "good" I might learn something myself after a few of you see it.
You simply give a file name a secret key and the message.
I am sure more experienced programmers will find several problems with my codeCode:/******************************************************/ /* This program will encrypt and decrypt messages. The*/ /* user will simply have to remeber a secret key. */ /******************************************************/ #include <iostream> #include <fstream> #include <string> using namespace std; // Function Prototypes --------------------------------- int GetUserChoice (); void Encryption (); void Decryption (); string XorString ( string source, int key ); // ----------------------------------------------------- // Main Function --------------------------------------- int main () { // Variable to hold our choice int choice; // Create an infinite loop ------------------------- while ( 1 ) { // GetUserChoice will return what the user wants to do // We can assign the returned value to our variable choice = GetUserChoice (); // Now we can check what the user wants if ( choice == 1 ) Encryption (); else if ( choice == 2 ) Decryption (); // If the choice was 3 that means we can break from our loop else if ( choice == 3 ) break; } // ------------------------------------------------- return 0; } // GetUserChoice Function ------------------------------ int GetUserChoice () { // Variable for the choice int choice; // Here we will print our menu and prompt for a number // This number will represent what the user wants to do // Once we have the number this function will return it cout << "Message Encryption" << endl; cout << "----------------------" << endl; cout << "1) Encrypt Message" << endl; cout << "2) Decrypt Message" << endl; cout << "3) Exit" << endl << endl; cout << "Make a selection: "; cin >> choice; // Now we will check to make sure the choice was valid if ( choice != 1 && choice != 2 && choice != 3 ) { cout << endl; cout << "Please enter 1, 2, or 3" << endl; cout << "Press enter to exit..."; // Since the user entered an invalid selection we // will just exit the program by returning our programs // exit code.. 3 cin.get (); return 3; } // If it makes it to this point that means the input was valid so we can return it return choice; } // ----------------------------------------------------- // Here is where we will encrypt the string ------------ string XorString ( string source, int key ) { // Here we loop through each character, using binary xor on it. for ( unsigned int loop = 0; loop < source.size (); loop ++ ) { source [loop] ^= key; } return source; } // Here we will get the file name, key, and message from the user ---- void Encryption () { // Variables for the file name, key and message ---- char file_name [255]; string message; string encrypted_message; int key; // ------------------------------------------------- cout << endl; cout << "Enter file name: "; cin >> file_name; cout << "Enter secret key: "; cin >> key; cout << "Enter your secret message." << endl; cout << "Message: "; // We need this to ignore anything that might be left over // and ruin our message cin.ignore ( 255, '\n' ); getline ( cin, message ); // Now we have all of the info we can encrypt and write -- // the string to the file -------------------------------- encrypted_message = XorString ( message, key ); ofstream file ( file_name ); file << encrypted_message; file.close (); // ------------------------------------------------------- cout << "Done..." << endl << endl; } // ------------------------------------------------------------------- // Decryption will work the same way. Instead of asking the user for the message, --- // we print it out. ----------------------------------------------------------------- void Decryption () { // Variables for the file name, key and message ---- char file_name [255]; string message; int key; // ------------------------------------------------- cout << endl; cout << "Enter file name: "; cin >> file_name; cout << "Enter secret key: "; cin >> key; // Now we will check to see if the file exists ----- ifstream file ( file_name ); if ( !file.is_open () ) { cout << "Failed to load " << file_name << "!" << endl; cout << "Press enter to exit..."; cin.get (); exit ( EXIT_FAILURE ); } // ----------------------------------------------- getline ( file, message ); file.close (); cout << "Message: " << XorString ( message, key ) << endl; cout << "Done..." << endl << endl; }. But if you see any really big nono's be sure to point them out! This was a quick little boredom project I did to kill a good 30 mins. ENJOY!
EDIT:
Sorry for the indention errors. Seems the boards code tags doesnt like MinGW Studios formatted code
And I know its not extremely useful but hey you moght want to store a phone number or something![]()



LinkBack URL
About LinkBacks
.
. But if you see any really big nono's be sure to point them out! This was a quick little boredom project I did to kill a good 30 mins. ENJOY!



