question

Escrever um programa para realizar a criptografia cifra Vernam.?

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>
resposta Resposta
Isto não é um tipo de código que eu tenho e experiência com e então eu tive que fazer algumas pesquisas.

Eu achei que envolve a operação XOR de texto não criptografado com um cypherstream. Neste caso, o cypherstream é um fluxo de números pseudoaleatórios. Uma semente para um gerador de números aleatórios é uma maneira para gerar uma seqüência reprodutível de números aleatórios. Este é um caso onde você precisa usar uma semente para que você pode obter a mesma seqüência de número aleatório para o processo de descriptografia. Observe que para a maioria das redes de números aleatórios não quer uma seqüência reprodutível. Nesse caso, você receber a semente do relógio do sistema para que é necessariamente diferente.

Agora, não vi você usar qualquer gerador de números aleatórios? Então, eu sei que não resolver o seu problema, mas espero que eu dei algum contexto tão necessário...

ComentáriosComentários
Acho que a resposta não está correta ou que você gostaria de acrescentar mais
alguma informação? Envie o seu comentário abaixo..

Guest


HTML não é permitido!

Image Code

Digite os caracteres que aparecem na imagem por isso sabemos que você é humano!

Receber um email quando alguém acrescenta outro comentário a esta pergunta


Topo da página


Home  Terms
Copyright © Accelerated Ideas 2005-2024
All rights reserved