Thread: Simple message encryption

Threaded View

Previous Post Previous Post   Next Post Next Post
  1. #1
    i dont know Vicious's Avatar
    Join Date
    May 2002
    Posts
    1,200

    Simple message encryption

    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.

    Code:
    /******************************************************/
    /* 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;
    	
    }
    I am sure more experienced programmers will find several problems with my code . 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
    Last edited by Vicious; 10-04-2004 at 12:34 AM.
    What is C++?

Popular pages Recent additions subscribe to a feed

Similar Threads

  1. Strange string behavior
    By jcafaro10 in forum C Programming
    Replies: 2
    Last Post: 04-07-2009, 07:38 PM
  2. Encryption program
    By zeiffelz in forum C Programming
    Replies: 1
    Last Post: 06-15-2005, 03:39 AM
  3. Architecture Question
    By Orborde in forum C++ Programming
    Replies: 1
    Last Post: 06-01-2005, 08:05 AM
  4. Dialog Box Problems
    By Morgul in forum Windows Programming
    Replies: 21
    Last Post: 05-31-2005, 05:48 PM
  5. RSA Encryption
    By minesweeper in forum Tech Board
    Replies: 6
    Last Post: 08-30-2003, 01:48 PM