Escreva um programa para realizar a criptografia cifra Vernam.
•Inputs
Valor de semente –A para o gerador de números aleatórios.
–A maneira de especificar codificar ou decodificar. Por exemplo, 0-> encode, 1-> decode
Cadeia –A de caracteres para codificar/decodificar. Você pode ignorar caso (por exemplo, deleite superior e minúsculas caracteres como idêntico).
•Test
Parâmetros os seguintes valores para demonstrar seu código: semente: 42
Encode/Decode: codificar
Seqüência de caracteres: A rápida raposa marrom saltou sobre o cão preguiçoso
Teste de –Decode: semente: 42
Encode/Decode: decodificar
Seqüência de caracteres:<use the="" output="" from="" the="" encode="" test="" as="" the="" input="" to="" the="" decode="" test="">
A parte principal que não entendo é a parte da semente deste problema. Eu tenho um programa de protótipo de trabalho sem a parte de escolha, mas vai funcionar em algum grau. Eu não sou capaz de codificar/decodificar com êxito a sentença com a raposa. Isso está me deixando nutts. Qualquer ajuda seria muito apreciada.
======================================================================
/ / C programa para implementar cifra Vernam para criptografar e descriptografar uma determinada mensagem. //
#include<stdio.h>
#define alfabeto 26
#define MAX 512
Char matriz [alfabeto] [alfabeto];
Char mensagem [MAX] chave [MAX], emessage [MAX], retrieveMessage [MAX];
int findRow(char); //function localizar linha
int findColumn(char); coluna de encontrar //function
int findDecRow(char,int);
int main)
{
int eu = 0, j, k, r, c;
k = 96;
para (eu = 0; eu<ALPHABET;i++)></ALPHABET;i++)>
{
k + +;
para (j = 0; j<ALPHABET;j++)></ALPHABET;j++)>
{
matriz [i] [j] = k + +;
If(k==123)
k = 97;
}
}
Char mensagem [MAX];
//Ask
printf ("digite mensagem: \n");
se (fgets (mensagem, sizeof(message), stdin) = = 0) retorna 0;
printf ("digite a chave: \n");
se (fgets (chave, sizeof(key), stdin) = = 0) retorna 0;
/ / Processo de criptografia
para (eu = 0; -chave [i]! = '\0'; i + +)
{
c=findRow(Key[i]);
r=findColumn(Message[i]);
eMessage [i] = matriz [r] [c];
}
eMessage [i] = '\0';
//Print mensagem criptografada
printf ("mensagem criptografada é: \n");
for(i=0;eMessage[i]!='\0';i++)
printf("%c",eMessage[i]);
Processo //Decryption
for(i=0;Key[i]!='\0';i++)
{
c=findColumn(Key[i]);
r=findDecRow(eMessage[i],c);
retrieveMessage [i] = matriz [r] [0];
}
retrieveMessage [i] = '\0';
printf ("\nMessage obtido é: \n");
for(i=0;retrieveMessage[i]!='\0';i++)
printf("%c",retrieveMessage[i]);
/ / getchar();
Return(0);
}
int findRow (char c)
{
int i;
para (eu = 0; eu<ALPHABET;i++)></ALPHABET;i++)>
{
If(array[0][i]==c)
Return(i);
}
}
int findColumn (char c)
{
int i;
para (eu = 0; eu<ALPHABET;i++)></ALPHABET;i++)>
{
If(array[i][0]==c)
Return(i);
}
}
int findDecRow (char c, int j)
{
int i;
para (eu = 0; eu<ALPHABET;i++)></ALPHABET;i++)>
{
If(array[i][j]==c)
Return(i);
}
}</stdio.h></use>