1answer.
Ask question
Login Signup
Ask question
All categories
  • English
  • Mathematics
  • Social Studies
  • Business
  • History
  • Health
  • Geography
  • Biology
  • Physics
  • Chemistry
  • Computers and Technology
  • Arts
  • World Languages
  • Spanish
  • French
  • German
  • Advanced Placement (AP)
  • SAT
  • Medicine
  • Law
  • Engineering
icang [17]
3 years ago
7

Implement the RC4 stream cipher in C++. User should be able to enter any key that is 5 bytes to 32 bytes long. Be sure to discar

d the first 3072 bytes of the pseudo random numbers. THE KEY OR THE INPUT TEXT MUST NOT BE HARD CODED IN THE PROGRAM.
Computers and Technology
1 answer:
gladu [14]3 years ago
6 0

Answer:

Explanation:

#include <iostream>

#include <string>

#include<vector>

using namespace std;  

vector<int> permute(vector<int>, vector<int>);

string encrypt(vector<int>s1 , vector<int> t1, string p);

string decrypt(vector<int>s1, vector<int> t1, string p);

int main() {

  string plaintext = "cryptology";

  string plaintext2 = "RC4";

  vector<int> S(256);

  vector<int> T(256);

  int key[] = { 1,2,3,6 };

  int key2[] = { 5,7,8,9 };

  int tmp = 0;

  for (int i = 0; i < 256;i++) {

      S[i] = i;

      T[i] = key[( i % (sizeof(key)/sizeof(*key)) )];

  }

  S = permute(S, T);

  for (int i = 0; i < 256 ;i++) {

      cout << S[i] << " ";

      if ((i + 1) % 16 == 0)

          cout << endl;

  }

  cout << endl;

  string p = encrypt(S, T, plaintext);

  cout << "Message: " << plaintext << endl;

  cout << "Encrypted Message: " << " " << p << endl;

  cout << "Decrypted Message: " << decrypt(S, T, p) << endl << endl;

  tmp = 0;

  for (int i = 0; i < 256;i++) {

      S[i] = i;

      T[i] = key2[(i % (sizeof(key) / sizeof(*key)))];

  }

  S = permute(S, T);

  for (int i = 0; i < 256;i++) {

      cout << S[i] << " ";

      if ((i + 1) % 16 == 0)

          cout << endl;

  }  

  cout << endl;

  p = encrypt(S, T, plaintext2);

  cout << "Message: " << plaintext2 << endl;

  cout << "Encrypted Msg: " << p << endl;

  cout << "Decrypted Msg: "<<decrypt(S, T, p) << endl << endl;

  return 0;

}

string decrypt(vector<int>s1, vector<int> t1, string p) {

  int i = 0;

  int j = 0;

  int tmp = 0;

  int k = 0;

  int b;

  int c;

  int * plain = new int[p.length()];

  string plainT;

  for (int r = 0; r < p.length(); r++) {

      i = (i + 1) % 256;

      j = (j + s1[i]) % 256;

      b = s1[i];

      s1[i] = s1[j];

      s1[j] = b;

      tmp = (s1[i] + s1[j]) % 256;

      k = s1[tmp];

      c = ((int)p[r] ^ k);

      plain[r] = c;

      plainT += (char)plain[r];

  }

  return plainT;

}  

string encrypt(vector<int>s1, vector<int> t1, string p) {

  int i = 0;

  int j = 0;

  int tmp = 0;

  int k = 0;

  int b;

  int c;

  int * cipher = new int [p.length()];

  string cipherT;

  cout << "Keys Generated for plaintext: ";

  for (int r = 0; r < p.length(); r++) {

      i = (i + 1) % 256;

      j = (j + s1[i]) % 256;

      b = s1[i];

      s1[i] = s1[j];

      s1[j] = b;

      tmp = (s1[i] + s1[j]) % 256;

      k = s1[tmp];

      cout << k << " ";

      c = ((int)p[r] ^ k);

      cipher[r] = c;  

      cipherT += (char)cipher[r];

  }

  cout << endl;

  return cipherT;

}

vector<int> permute(vector<int> s1, vector<int> t1) {

  int j = 0;

  int tmp;

  for (int i = 0; i< 256; i++) {

      j = (j + s1[i] + t1[i]) % 256;

      tmp = s1[i];

      s1[i] = s1[j];

      s1[j] = tmp;

  }

  return s1;

}

You might be interested in
The term ________________ denotes data that is being stored on devices like a universal serial bus (USB) thumb drive, laptop, se
Vinvika [58]

Answer:

The term "Local storage"denotes data that is being stored on devices like a universal serial bus (USB) thumb drive, laptop, server, DVD, CD, or server. The term "hosted storage," "Internet storage" or "cloud storage." denotes data that exists in a mobile state on the network, such as data on the Internet, wireless networks, or a private network

4 0
3 years ago
Read 2 more answers
During which part of geologic time did photosynthesis evolve?
m_a_m_a [10]
During Archean part of geological time photosynthesis evolve.
8 0
3 years ago
Read 2 more answers
Excel templates makes creating a professional looking spreadsheet easier by including all of the following EXCEPT_____ in the te
Anika [276]

Answer:

Excel templates makes creating a professional looking spreadsheet easier by including all of the following except Data  in the template.

Explanation:

Templates are created to define the basic structure of any document which is repeated and the user need not do those designs from the scratch.

Normally a template will contain pre-defined formula, formatting. But it will not contain data because, the purpose of template is that the structure will be same but the value may differ and the template should react according to the data.

So any template will contain design except data. We can use existing template / default template or even create a new one.

4 0
3 years ago
The _________ operator returns the distance in bytes, of a label from the beginning of its enclosing segment, added to the segme
DanielleElmas [232]

Answer:

C. Offset.

Explanation:

An offset operator can be defined as an integer that typically illustrates or represents the distance in bytes, ranging from the beginning of an object to the given point (segment) of the same object within the same data structure or array. Also, the distance in an offset operator is only valid when all the elements present in the object are having the same size, which is mainly measured in bytes.

Hence, the offset operator returns the distance in bytes, of a label from the beginning of its enclosing segment, added to the segment register.

For instance, assuming the object Z is an array of characters or data structure containing the following elements "efghij" the fifth element containing the character "i" is said to have an offset of four (4) from the beginning (start) of Z.

8 0
3 years ago
Any cute boy wants to talk with me?
andrew-mc [135]

Answer:

no

Explanation:

no

5 0
2 years ago
Read 2 more answers
Other questions:
  • ________ is a software that interprets java bytecode.
    12·1 answer
  • Who is the person responsible for creating the original website content?
    14·1 answer
  • A thin red border indicates the active cell. (True or False)
    12·1 answer
  • HELP 11 pointsw to the person who helps me
    11·2 answers
  • A communication medium that carries a large amount of data at a fast speed is called
    6·1 answer
  • What is lasso tool write the name of any modelling and animation software<br>​
    8·1 answer
  • While developing a network application, a programmer adds functionally that allows her to access the running program without aut
    14·1 answer
  • What is the output of the following code:
    12·1 answer
  • The _____ of a story describes the time and location of a story.
    5·2 answers
  • What is the difference between turn-based game mode and point-based game mode?
    15·1 answer
Add answer
Login
Not registered? Fast signup
Signup
Login Signup
Ask question!