Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

โปรแกรม C++ เพื่อใช้งาน Caesar Cypher


มันเป็นรหัสตัวเลขแบบโมโน-ตัวอักษรซึ่งแต่ละตัวอักษรของข้อความธรรมดาจะถูกแทนที่ด้วยตัวอักษรอื่นเพื่อสร้างข้อความเข้ารหัส เป็นรูปแบบรหัสทดแทนที่ง่ายที่สุด

cryptosystem นี้โดยทั่วไปจะเรียกว่า Shift Cipher แนวคิดคือการแทนที่ตัวอักษรแต่ละตัวด้วยตัวอักษรอื่นซึ่ง 'เปลี่ยน' ด้วยตัวเลขคงที่บางตัวระหว่าง 0 ถึง 25

สำหรับโครงร่างประเภทนี้ ทั้งผู้ส่งและผู้รับตกลงใน 'หมายเลขกะลับ' สำหรับการเปลี่ยนตัวอักษร ตัวเลขนี้ซึ่งอยู่ระหว่าง 0 ถึง 25 จะกลายเป็นคีย์ของการเข้ารหัส

ชื่อ 'Caesar Cipher' บางครั้งใช้เพื่ออธิบาย Shift Cipher เมื่อใช้ 'shift of three'

กระบวนการ

  • ในการเข้ารหัสจดหมายข้อความธรรมดา ผู้ส่งจะวางไม้บรรทัดแบบเลื่อนไว้ใต้ตัวอักษรข้อความธรรมดาชุดแรก และเลื่อนไปทางซ้ายตามจำนวนตำแหน่งของกะลับ

  • จากนั้น จดหมายข้อความธรรมดาจะถูกเข้ารหัสไปยังตัวอักษรข้อความเข้ารหัสบนไม้บรรทัดแบบเลื่อนที่อยู่ด้านล่าง ผลลัพธ์ของกระบวนการนี้แสดงไว้ในภาพประกอบต่อไปนี้สำหรับการเปลี่ยนตำแหน่งที่ตกลงกันไว้สามตำแหน่ง ในกรณีนี้ 'บทช่วยสอน' ข้อความธรรมดาจะถูกเข้ารหัสเป็นข้อความเข้ารหัส 'wxwruldo' นี่คือตัวอักษร ciphertext สำหรับ Shift ของ 3 -

โปรแกรม C++ เพื่อใช้งาน Caesar Cypher

  • เมื่อได้รับข้อความเข้ารหัส ผู้รับที่รู้กะลับด้วย จะจัดตำแหน่งไม้บรรทัดแบบเลื่อนใต้ตัวอักษรข้อความเข้ารหัสและเลื่อนไปทางขวาตามหมายเลขกะที่ตกลงไว้ 3 ในกรณีนี้

  • จากนั้นเขาก็แทนที่ตัวอักษรไซเฟอร์เท็กซ์ด้วยตัวอักษรธรรมดาบนไม้บรรทัดแบบเลื่อนด้านล่าง ดังนั้นข้อความเข้ารหัส 'wxwruldo' จึงถูกถอดรหัสเป็น 'บทช่วยสอน' ในการถอดรหัสข้อความที่เข้ารหัสด้วย Shift เท่ากับ 3 ให้สร้างตัวอักษรแบบข้อความธรรมดาโดยใช้การเปลี่ยนแปลงของ '-3' ดังที่แสดงด้านล่าง -

โปรแกรม C++ เพื่อใช้งาน Caesar Cypher

นี่คือการนำกระบวนการข้างต้นไปใช้ใน C++

ขั้นตอนและรหัสเทียม

รับข้อความและคีย์เป็นอินพุต -

สำหรับการเข้ารหัส

  • ป้อนข้อมูล: กวดวิชา.
  • ผลลัพธ์: wxwruldo

สำหรับการถอดรหัส

  • ป้อนข้อมูล: wxwruldo
  • ผลลัพธ์: กวดวิชา

สำหรับการเข้ารหัส

Begin
   For i = 0 to msg[i] != '\0'
      ch = msg[i]
   //encrypt for lowercase letter
      If (ch >= 'a' and ch <= 'z')
         ch = ch + key
         if (ch > 'z')
            ch = ch - 'z' + 'a' - 1
         done
         msg[i] = ch
   //encrypt for uppercase letter
      else if (ch >= 'A' and ch <= 'Z')
         ch = ch + key
         if (ch > 'Z')
            ch = ch - 'Z' + 'A' - 1
         done
         msg[i] = ch
      done
   done
   Print Encrypted message
End

สำหรับการถอดรหัส

Begin
   For i = 0 to msg[i] != '\0'
      ch = msg[i]
   //decrypt for lowercase letter
      if(ch >= 'a' and ch <= 'z')
         ch = ch - key
         if (ch < 'a')
            ch = ch +'z' - 'a' + 1
      done
      msg[i] = ch
   //decrypt for uppercase letter
      else if (ch >= 'A' and ch <= 'Z')
         ch = ch + key
         if (ch < 'A')
            ch = ch + 'Z' - 'A' + 1
         done
         msg[i] = ch
      done
   done
   Print decrypted message
End

ตัวอย่าง

#include<iostream>
#include<string.h>
using namespace std;
int main() {
   cout<<"Enter the message:\n";
   char msg[100];
   cin.getline(msg,100); //take the message as input
   int i, j, length,choice,key;
   cout << "Enter key: ";
   cin >> key; //take the key as input
   length = strlen(msg);
   cout<<"Enter your choice \n1. Encryption \n2. Decryption \n";
   cin>>choice;
   if (choice==1) //for encryption{
      char ch;
      for(int i = 0; msg[i] != '\0'; ++i) {
         ch = msg[i];
         //encrypt for lowercase letter
         If (ch >= 'a' && ch <= 'z'){
            ch = ch + key;
            if (ch > 'z') {
               ch = ch - 'z' + 'a' - 1;
            }  
            msg[i] = ch;
         }
         //encrypt for uppercase letter
         else if (ch >= 'A' && ch <= 'Z'){
            ch = ch + key;
            if (ch > 'Z'){
               ch = ch - 'Z' + 'A' - 1;
            }
            msg[i] = ch;
         }
      }
      printf("Encrypted message: %s", msg);
   }
   else if (choice == 2) { //for decryption
      char ch;
      for(int i = 0; msg[i] != '\0'; ++i) {
         ch = msg[i];
         //decrypt for lowercase letter
         if(ch >= 'a' && ch <= 'z') {
            ch = ch - key;
            if(ch < 'a'){
               ch = ch + 'z' - 'a' + 1;
            }
            msg[i] = ch;
         }
         //decrypt for uppercase letter
         else if(ch >= 'A' && ch <= 'Z') {
            ch = ch - key;
            if(ch < 'A') {
               ch = ch + 'Z' - 'A' + 1;
            }
            msg[i] = ch;
         }
      }
      cout << "Decrypted message: " << msg;
   }
}

ผลลัพธ์

For encryption:
Enter the message:
tutorial
Enter key: 3
Enter your choice
1. Encryption
2. Decryption
1
Encrypted message: wxwruldo

For decryption:
Enter the message:
wxwruldo
Enter key: 3
Enter your choice
1. Encryption
2. Decryption
2
Decrypted message: tutorial