XOR Cipher - GeeksforGeeks

30 Jun, 2021
XOR Encryption is an encryption method used to encrypt data and is hard to crack by brute-force method, i.e generating random encryption keys to match with the correct one. 
Below is a simple implementation in C++. The concept of implementation is to first define XOR – encryption key and then to perform XOR operation of the characters in the String with this key which you want to encrypt. To decrypt the encrypted characters we have to perform XOR operation again with the defined key. Here we are encrypting the entire String. 
C++
Java
Python3
C#
// C++ program to implement XOR - Encryption#include<bits/stdc++.h> // The same function is used to encrypt and// decryptvoid encryptDecrypt(char inpString[]){    // Define XOR key    // Any character value will work    char xorKey = 'P';     // calculate length of input string    int len = strlen(inpString);     // perform XOR operation of key    // with every character in string    for (int i = 0; i < len; i++)    {        inpString[i] = inpString[i] ^ xorKey;        printf("%c",inpString[i]);    }} // Driver program to test above functionint main(){    char sampleString[] = "GeeksforGeeks";     // Encrypt the string    printf("Encrypted String: ");    encryptDecrypt(sampleString);    printf("\n");     // Decrypt the string    printf("Decrypted String: ");    encryptDecrypt(sampleString);     return 0;}
// Java program to implement XOR - Encryptionclass XOREncryption{    // The same function is used to encrypt and    // decrypt    static String encryptDecrypt(String inputString)    {        // Define XOR key        // Any character value will work        char xorKey = 'P';         // Define String to store encrypted/decrypted String        String outputString = "";         // calculate length of input string        int len = inputString.length();         // perform XOR operation of key        // with every character in string        for (int i = 0; i < len; i++)        {            outputString = outputString +            Character.toString((char) (inputString.charAt(i) ^ xorKey));        }         System.out.println(outputString);        return outputString;    }     // Driver code    public static void main(String[] args)    {        String sampleString = "GeeksforGeeks";         // Encrypt the string        System.out.println("Encrypted String");        String encryptedString = encryptDecrypt(sampleString);         // Decrypt the string        System.out.println("Decrypted String");        encryptDecrypt(encryptedString);    }} // This code is contributed by Vivekkumar Singh
# Python3 program to implement XOR - Encryption # The same function is used to encrypt and# decryptdef encryptDecrypt(inpString):     # Define XOR key    # Any character value will work    xorKey = 'P';     # calculate length of input string    length = len(inpString);     # perform XOR operation of key    # with every character in string    for i in range(length):             inpString = (inpString[:i] +             chr(ord(inpString[i]) ^ ord(xorKey)) +                     inpString[i + 1:]);        print(inpString[i], end = "");         return inpString; # Driver Codeif __name__ == '__main__':    sampleString = "GeeksforGeeks";     # Encrypt the string    print("Encrypted String: ", end = "");    sampleString = encryptDecrypt(sampleString);    print("\n");     # Decrypt the string    print("Decrypted String: ", end = "");    encryptDecrypt(sampleString); # This code is contributed by Princi Singh
// C# program to implement XOR - Encryptionusing System;     public class XOREncryption{    // The same function is used to encrypt and    // decrypt    static String encryptDecrypt(String inputString)    {        // Define XOR key        // Any character value will work        char xorKey = 'P';         // Define String to store encrypted/decrypted String        String outputString = "";         // calculate length of input string        int len = inputString.Length;         // perform XOR operation of key        // with every character in string        for (int i = 0; i < len; i++)        {            outputString = outputString +            char.ToString((char) (inputString[i] ^ xorKey));        }         Console.WriteLine(outputString);        return outputString;    }     // Driver code    public static void Main(String[] args)    {        String sampleString = "GeeksforGeeks";         // Encrypt the string        Console.WriteLine("Encrypted String");        String encryptedString = encryptDecrypt(sampleString);         // Decrypt the string        Console.WriteLine("Decrypted String");        encryptDecrypt(encryptedString);    }} // This code has been contributed by 29AjayKumar
Output:  
Encrypted String: 55;#6?"55;#
Decrypted String: GeeksforGeeks
The basic idea behind XOR – encryption is, if you don’t know the XOR-encryption key before decrypting the encrypted data, it is impossible to decrypt the data. For example, if you XOR two unknown variables you cannot tell what the output of those variables is. Consider the operation A XOR B, and this returns true. Now if the value of one of the variable is known we can tell the value of another variable. If A is True then B should be False or if A is False then B should be true according to the properties of the boolean XOR operation. Without knowing one of the value we can not decrypt the data and this idea is used in XOR – encryption.
Related Articles: Vigenère Cipher Caesar CipherThis article is contributed by Harsh Agarwal. If you like GeeksforGeeks and would like to contribute, you can also write an article using write.geeksforgeeks.org or mail your article to review-team@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.Please write comments if you find anything incorrect, or you want to share more information about the topic discussed above. 
Vivekkumar Singh
29AjayKumar
princi singh
anikakapoor
Bitwise-XOR
cryptography
Strings
Strings
cryptography
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.
Comments
Old Comments
Python program to check if a string is palindrome or not
Convert string to char array in C++
Array of Strings in C++ (5 Different Ways to Create)
Longest Palindromic Substring | Set 1
Reverse words in a given string
Check whether two strings are anagram of each other
Length of the longest substring without repeating characters
How to split a string in C/C++, Python and Java?
Remove duplicates from a given string
Top 50 String Coding Problems for Interviews