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
notka56 [123]
3 years ago
15

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 discard

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:
Marina86 [1]3 years ago
3 0

RC4 stream cipher in C. User is able to enter any key that is 5 bytes to 32 bytes long

Explanation:

#include <stdio.h>

#include <string.h>

#include <stdlib.h>

#define N 256   // 2^8

void swap(unsigned char *a, unsigned char *b) {

   int tmp = *a;

   *a = *b;

   *b = tmp;

}

int KSA(char *key, unsigned char *S) {

   int len = strlen(key);

   int j = 0;

   for(int i = 0; i < N; i++)

       S[i] = i;

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

       j = (j + S[i] + key[i % len]) % N;

       swap(&S[i], &S[j]);

   }

   return 0;

}

int PRGA(unsigned char *S, char *plaintext, unsigned char *ciphertext) {

   int i = 0;

   int j = 0;

   for(size_t n = 0, len = strlen(plaintext); n < len; n++) {

       i = (i + 1) % N;

       j = (j + S[i]) % N;

       swap(&S[i], &S[j]);

       int rnd = S[(S[i] + S[j]) % N];

       ciphertext[n] = rnd ^ plaintext[n];

   }

   return 0;

}

int RC4(char *key, char *plaintext, unsigned char *ciphertext) {

   unsigned char S[N];

   KSA(key, S);

   PRGA(S, plaintext, ciphertext);

   return 0;

}

int main(int argc, char *argv[]) {

   if(argc < 3) {

       printf("Usage: %s <key> <plaintext>", argv[0]);

       return -1;

   }

   unsigned char *ciphertext = malloc(sizeof(int) * strlen(argv[2]));

   RC4(argv[1], argv[2], ciphertext);

   for(size_t i = 0, len = strlen(argv[2]); i < len; i++)

       printf("%02hhX", ciphertext[i]);

   return 0;

}

You might be interested in
Implement one array of the English alphabet (26 characters). a) Create a function, getLetters() to cast and generate the array.
WARRIOR [948]

#include <fstream>

#include <iostream>

#include <iomanip>

#include <cstring>

#include <cstdlib>

using namespace std;

// Function Declarations

void display(char alphabets[],int MAX_SIZE);

void reverse(char alphabets[],int MAX_SIZE);

void swap(char &ch1,char &ch2);

int main() {

 //Declaring constant

const int MAX_SIZE=26;

 

//Declaring a char array

char alphabets[MAX_SIZE];

 

//Populating the array with alphabets

for(int i=0;i<MAX_SIZE;i++)

{

 alphabets[i]=(char)(65+i);

 }

 

 cout<<"Original: ";

 display(alphabets,MAX_SIZE);

 reverse(alphabets,MAX_SIZE);

 cout<<"Reversed: ";

 display(alphabets,MAX_SIZE);

 return 0;

}

//This function will display the array contents

void display(char alphabets[],int MAX_SIZE)

{

 for(int i=0;i<MAX_SIZE;i++)

 {

    cout<<alphabets[i]<<" ";

 }

 cout<<endl;

}

//This function will reverse the array elements

void reverse(char alphabets[],int MAX_SIZE)

{

 int first,last;

 first=0;

 last=MAX_SIZE-1;

 

 while(first<last)

 {

   

    swap(alphabets[first],alphabets[last]);

    first++;

    last--;

   

 }

}

void swap(char &ch1,char &ch2)

{

 char temp;

 temp=ch1;

 ch1=ch2;

 ch2=temp;

6 0
2 years ago
A ___________ variable is used to add up a set of values. fill in the blank
TEA [102]

Answer:

dependent variable -- As it depends on the other variables, changes when they change

3 0
3 years ago
Which command executed in Windows PE would transfer both the files and directory structure from one device to another device or
EleoNora [17]

Answer:

xcopy

Explanation:

xcopy (which stands for extended copy) command, was created to have several functions and ability to copy one or more folders, files or an entire directory from one location to another. It is more powerful than copy command that was seen in the first set of operating systems. It is currently being built into desktop operating systems and Microsoft windows server.

6 0
3 years ago
associate true with the variable has_dups if the list list1 has any duplicate elements (that is if any element appears more than
nordsb [41]

True. If the list contains any elements that appear more than once, then it has duplicate elements and the variable has_dups is True.

What is variable?
Throughout computer programming, a variable is indeed a named container for a specific set of bits or type of data. A variable is indeed an abstract storage location with an associated symbolic name that holds some unidentified quantity of information made reference to as a value. Eventually, a memory address may be used to link or identify a variable. In addition to using the variable name or the variable itself, depending on circumstances, the stored value is typically referenced by the variable name. The name can be used independently of the precise information it represents thanks to the separation of name as well as content. During run time, a value can be bound to an identification number in computer source code.

To learn more about variable
brainly.com/question/29360094
#SPJ1

7 0
1 year ago
Does anyone know edhesive 4.3 question 1
navik [9.2K]

No

.................................. :)

5 0
3 years ago
Read 2 more answers
Other questions:
  • The true or false questions.
    13·1 answer
  • Eugene wants to indent a paragraph, but the ruler is not present. Which tabs could Eugene use in order to accomplish his goal?
    14·1 answer
  • How does netbios identify a computer system on the network?
    13·1 answer
  • When using the Common Internet File System (CIFS), which security model does not require a password to be set for the file share
    7·1 answer
  • Can I ask a computer question based on engineering?
    8·1 answer
  • Java code?????
    12·1 answer
  • Assume variable age = 22, pet = "dog", and pet_name = "Gerald".
    6·1 answer
  • Explain with examples what is software​
    6·1 answer
  • Do small companies need computers? why?<br>​
    12·1 answer
  • 236. A system such as a printer, smart TV, or HVAC controller, typically uses an operating system on what is called a:
    13·2 answers
Add answer
Login
Not registered? Fast signup
Signup
Login Signup
Ask question!