Respuesta :
Answer: Provided in the explanation section
Explanation:
C++ Code
#include<iostream>
#include<fstream>
#include<string>
using namespace std;
// read plain text from file
void readPlaneText(char *file,char *txt,int &size){
 ifstream inp;
Â
 inp.open(file);
Â
 // index initialize to 0 for first character
Â
 int index=0;
 char ch;
Â
 if(!inp.fail()){
   // read each character from file Â
   while(!inp.eof()){
     inp.get(ch);
     txt[index++]=ch;
   }
 }
Â
 // size of message
 size=index-1;
}
// read key
int **readKey(char *file,int **key,int &size){
 ifstream ink;
Â
 //
 ink.open(file);
   if(!ink.fail()){
    Â
     // read first line as size
   ink>>size;
  Â
   // create 2 d arry
   key=new int*[size];
  Â
   for(int i=0;i<size;i++){
     key[i]=new int[size];
   }
  Â
   // read data in 2d matrix
   for(int i=0;i<size;i++){
     for(int j=0;j<size;j++){
       ink>>key[i][j];
     } Â
   }
 }
 return key;
}
// print message
void printText(string txt,char *msg,int size){
 cout<<txt<<":\n\n";
Â
 for(int i=0;i<size;i++){
   cout<<msg[i];
 }
}
// print key
void printKey(int **key,int size){
 cout<<"\n\nKey matrix:\n\n";
 for(int i=0;i<size;i++){
   for(int j=0;j<size;j++){
     cout<<key[i][j]<<" ";
   } Â
   cout<<endl;
 }
}
void encrypt(char *txt,int size,int **key,int kSize,char *ctxt){
 int *data=new int[kSize];
Â
 for(int i=0;i<size;i=i+kSize){ Â
Â
 // read key size concecutive data
   for(int a=0;a<kSize;a++){
     data[a]=txt[i+a]-'a';
   }
  Â
   // cipher operation
   for(int a=0;a<kSize;a++){
     int total=0;
     for(int b=0;b<kSize;b++){
       total+=key[a][b]*data[b];
     } Â
     total=total%26;
     ctxt[i+a]=(char)('a'+total);
   }   Â
 }
}
int main(int argc,char **argv){
 char text[10000];
 char ctext[10000];
 int **key;
 int keySize;
 int size;
 // input
 key=readKey(argv[1],key,keySize);
 readPlaneText(argv[2],text,size);
 encrypt(text,size,key,keySize,ctext);
Â
 // output
 printKey(key,keySize);
 cout<<endl<<endl;
 printText("Plaintext",text,size);
 cout<<endl<<endl;
 printText("Ciphertext",ctext,size);
Â
 return 0;
}
cheers i hope this helped !!!
