Ir ao conteúdo
  • Cadastre-se

Programa em C(dev c++) que criptografe e descriptografe um código com as coodenadas dadas pelo professor, alguem pode me ajudar?


Ronaldo Filho

Posts recomendados

Ola galera, bom dia! Estou fazendo um trabalho escolar onde preciso criptografar e descriptografar dados. Não estou conseguindo concatenar as ideias. o trabalho pede para:

 

A lei de formação para a criptografia das mensagens é a seguinte:

 

1. A criptografia é aplicada a cada substring da string definida. Sendo que uma substring é dada pelo conjunto de caracteres até que se encontre um espaço em branco ou o final da string substrings.

2. Existem 4 padrões de criptografia que serão aplicados nas substrings :

a. Tudo é Vid@: cada vogal (a, e, i, o, u) e a letra P devem ser trocas pela substring Vid@ seguido de um número, conforme a legenda abaixo:

P: Vid@  a: Vid@1 A: Vid@1P e: Vid@2 E: Vid@2P i: Vid@3 I:  Vid@3P o: Vid@4 O: Vid@4P u: Vid@5 U: Vid@5P

Ex: oca  Vid@4cVid@1

  

b. Prefixo TOT: conta o númer y TOT da substring.  A técnica Prefixo EI não é case sensitive (não diferencia maiúsculas de minúsculas). Ex: aYby => TOTTOTaYby

c. Inversão quase total: a substring é redefinida sendo escrita de trás para frente, além disso, garante que o número de letras da nova substring será impar inserindo o caractere # em strings de tamanho par.  #

      

abc será transformado em cba .

d. Inversão 2 a 2: promove a troca entre pares de caracteres. 

e. Junção: primeiro é aplicado o Tudo é Vid@, depois o Prefixo TOT, em seguida a Inversão quase total e finalmente a Inversão 2 a 2 . Ex: tyca => tyVid@1 => TOTtyVid@1 => 1@diV#ytTOT => @1id#VtyOTT

3. A ordem de aplicação dos padrões de criptografia nas substrings da string principal é: Tudo é Vid@, Prefixo TOT, Inversão quase total, Inversão 2 a 2 e Junção, em seguida começa-se o processo novamente.

oca aYby abcd abcd tyca oca Vid@4cVid@1 TOTTOTaYby dc#ba badc @1id#VtyOTT Vid@4cVid@1

 

 

Ex2: oca aYby abcd abcd Vid@4cVid@1 TOTTOTaYby dc#ba badc

 

 

1) Faça a função lerString que aloca dinamicamente uma string de 5000 caracteres (use uma constante #define TAMANHO 5000) e promove a leitura da mesma pelo teclado, retornando a string informada.

A assinatura da função é:  char* lerDados()

 

2) Faça a função criptografaDados que recebe a string informada e retorna uma nova string com os dados criptografados.

 

3) Faça a função descriptografaDados que recebe uma string criptografada e recria a mensagem original retornando-a.

 

4) Faça um algoritmo que leia uma string (usando a função lerString), gera uma nova string criptografada (usando criptografaDados) imprimindo-a na tela, depois, a partir dessa string criptografada chama-se a função de descriptografia (descriptografaDados) que retorna a string original e essa é impressa na tela.

Exemplo de entrada de dados:

 

Digite a string de mensagem: oca aYby abcd abcd tyca oca (digitado pelo usuário)

 

A string criptografada é: Vid@4cVid@1 TOTTOTaYby dc#ba badc @1id#VtyOTT Vid@4cVid@1 (gerada pela função criptografaDados) A string original é: oca aYby abcd abcd tyca oca (gerada pela função descriptografaDados)

 

 

 

 

Se alguem puder me dar uma força, serei grato! Tenho um escopo aqui digitado mas nao estou conseguindo concatenar as ideias.....

Link para o comentário
Compartilhar em outros sites

amigao, to com um pouco de dificuldade nessa materia, aí então começei aqui meu programa e to travado aqui(veja o codigo abaixo). Não estou conseguindo contatenar e juntar tudo....se puder me da uma força, agradeço.....

 

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include<conio.h>
#define TAM 5000
 
 
char *InveQuaseTotal(char *str, char *cripto){
 
char aux1[100];
cripto = (char*)strtok(str1, " ");
int aux2 = strlen(cripto)/2;
 
 
 
}
char *TOT(char *str1, char *cripto){
 
cripto = (char*)strtok(str1," ");
char tot[100];
strcpy(tot, "");
int i;
 
for(i=0;i<strlen(cripto);i++){
if (cripto == 'Y' || cripto =='y'){
strcat(tot,"TOT");
}
 
}
strcat(tot, cripto);
strcpy(cripto, tot);
printf("%s", cripto);
 
}
char *trocaTroca(char *str1, char *cripto){
 
int tam2 = strlen(str1);
printf("%d", tam2);
strcpy(cripto,"");
 
int i;
 
for(i=0;i<tam2;i++){
if(str1 == 'P'){
strcat(cripto, "Vid@");
}else if (str1 == 'a'){
strcat(cripto, "Vid@1");
}else if (str1 == 'A'){
strcat(cripto, "Vid@1P");
}else if (str1 == 'e'){
strcat(cripto, "Vid@2");
}else if (str1 == 'E'){
strcat(cripto, "Vid@2P");
}else if (str1 == 'i'){
strcat(cripto, "Vid@3");
}else if (str1 == 'I'){
strcat(cripto, "Vid@3P");
}else if (str1 == 'o'){
strcat(cripto, "Vid@4");
}else if (str1 == 'O'){
strcat(cripto, "Vid@4P");
}else if (str1 == 'u'){
strcat(cripto, "Vid@5");
}else if (str1 == 'U'){
strcat(cripto, "Vid@5P");
}
 
}
 
 
 
}
 
char *criptoDados(str1){
 
char *cripto = str1;
 
 
return cripto;
 
}
char *lerDados(){  /*Ler os dados*/
 
char* str1 = (char*)malloc(TAM * sizeof (char));
 
 
printf("\n\nDigite o texto desejado\n\n");
gets(str1);
 
 
printf("\n\nO texto a ser criptografado e': \t%s ", str1);
 
return str1;
}
 
 
int main() {
 
 
lerDados();
//trocaTroca();
printf("\n\n");
criptoDados();
 
 
return 0;
}
Link para o comentário
Compartilhar em outros sites

  • 4 semanas depois...
Visitante
Este tópico está impedido de receber novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...