Ir ao conteúdo
  • Cadastre-se
Gabriel Lin

C++ Programa de criptografia simples

Recommended Posts

E a e pessoal,sou iniciante na área de programação e foi pedido um trabalho de criptografia em c++,porém como sou iniciante o que conheço ainda são apenas comandos de repetições tipo for,while,e possível fazer um código de criptografia atribuindo letras a números,ou usando o for que eu ja conheço,a criptografia seria em ASCII.Vi alguns por ai que usa count,getline,coisas que ainda não aprendi.

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Gabriel Lin Primeiro busque entender o processo para depois fazer seu trabalho: https://pt.khanacademy.org/computing/computer-science/cryptography/crypt/v/intro-to-cryptography

 

Quando você falhar na linguagem de programação ou no código, venha aqui e peça ajuda.

  • Curtir 2

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olha o que fiz cara,não estou conseguindo descriptografar,alem dele mostrar a mensagem criptografada linha por linha,eu queria que ele mostrasse a mensagem criptografa tudo em 1 linha só,quando consertar isso vou tentar fazer um menu antes,para escolher criptografia ou descriptografia.

 

 

 

#include<conio.h>
#include<stdio.h>
#include<string.h>
int main()
{

char msg[999];
char crip_msg[999];
int tam_msg;
int i;
printf("\n Digite texto ou palavra a ser criptografada:");
gets(msg);
tam_msg = strlen(msg);
for(i=0;i<tam_msg;i++)
{
    crip_msg = msg * 5;


}
for(i=0;i<tam_msg;i++)
{
printf("\n A mensagem criptografada e :%d",crip_msg);
}
printf("\n Digite mensagem a ser descriptografada:");
gets(crip_msg);
tam_msg = strlen(crip_msg);
for(i=0;i<tam_msg;i++)
{

msg = crip_msg - 25;
printf("\n A mensagem descriptograda e: %c",msg);
}
getch();
return 0;
}

adicionado 1 minuto depois

@CiroboyBR Desculpa se conter erros grotescos no código sou novato.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Esse salt que você esta dando impossibilita o uso de printf, pois retornara um carácter inexistente na tabela ASCII, tenta alterar esse seu cálculo, segue umas alterações:

#include<stdio.h>
#include<string.h>
int main()
{
        char msg[999];
        char crip_msg[999];
        int tam_msg;
        int i;

        //encrypt
        printf("\n Digite texto ou palavra a ser criptografada: ");
        scanf("%s", &msg);

        tam_msg = strlen(msg);
        for(i=0;i<tam_msg;i++)
        {
                crip_msg[i] = msg[i] + 5;
        }

        printf("\n A mensagem criptografada e : %s\n\n", crip_msg);


        //decrypt
        printf(" Digite mensagem a ser descriptografada: ");
        scanf("%s",&crip_msg);

        tam_msg = strlen(crip_msg);
        for(i=0;i<tam_msg;i++)
        {
                msg[i] = crip_msg[i] - 5;
        }


        printf("\n A mensagem descriptografada e : %s\n\n", msg);
        return 0;
}

 

  • Obrigado 1

Compartilhar este post


Link para o post
Compartilhar em outros sites
13 minutos atrás, TYSQUARE89 disse:

Esse salt que você esta dando impossibilita o uso de printf, pois retornara um carácter inexistente na tabela ASCII, tenta alterar esse seu cálculo, segue umas alterações:


#include<stdio.h>
#include<string.h>
int main()
{
        char msg[999];
        char crip_msg[999];
        int tam_msg;
        int i;

        //encrypt
        printf("\n Digite texto ou palavra a ser criptografada: ");
        scanf("%s", &msg);

        tam_msg = strlen(msg);
        for(i=0;i<tam_msg;i++)
        {
                crip_msg[i] = msg[i] + 5;
        }

        printf("\n A mensagem criptografada e : %s\n\n", crip_msg);


        //decrypt
        printf(" Digite mensagem a ser descriptografada: ");
        scanf("%s",&crip_msg);

        tam_msg = strlen(crip_msg);
        for(i=0;i<tam_msg;i++)
        {
                msg[i] = crip_msg[i] - 5;
        }


        printf("\n A mensagem descriptografada e : %s\n\n", msg);
        return 0;
}

 

Top cara muito obrigado,se tiver tempo gostaria de tirar essas duvidas,poderia me explicar o que e esse salt?,eu tambem nao poderia calcular com vezes,so com soma ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Gabriel Lin O salt seria o método de embaralhamento que você usou, no caso vezes 5 e -25, mas nesse caso ele não é aleatório, tirando o significado de salt...

Você pode calcular vezes, soma, etc., porém você precisa dar o output, mostrando a mensagem criptografada, e caso valor do texto criptografado não esteja na tabela ASCII, ele não sera mostrado, ai não tem como o usuário descriptografar corretamente. O que você pode fazer é usar vezes e armazenar os resultados em um vetor de int, ai no momento de descriptografar retornar para um vetor de char, assim:

 

#include<stdio.h>
#include<string.h>
int main()
{
        char msg[999];
        int crip_msg[999];
        int tam_msg;
        int i;

        //encrypt
        printf("\n Digite texto ou palavra a ser criptografada: ");
        scanf("%s", &msg);

        tam_msg = strlen(msg);
        for(i=0;i<tam_msg;i++)
        {
                crip_msg[i] = (msg[i])*5;
        }

        for(i=0;i<tam_msg;i++)
        printf("\n A mensagem criptografada e : %d", crip_msg[i]);


        //decrypt
        printf("\n Digite mensagem a ser descriptografada:\n");
        for(i=0; i<tam_msg; i++)
        scanf("%d",&crip_msg[i]);

        for(i=0;i<tam_msg;i++)
        {
                msg[i] = (int)(crip_msg[i])/5;
        }

        printf("\n A mensagem descriptografada e : %s\n\n", msg);
        return 0;
}

 

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

valeu cara muito obrigado.

adicionado 19 minutos depois
27 minutos atrás, TYSQUARE89 disse:

@Gabriel Lin O salt seria o método de embaralhamento que você usou, no caso vezes 5 e -25, mas nesse caso ele não é aleatório, tirando o significado de salt...

Você pode calcular vezes, soma, etc., porém você precisa dar o output, mostrando a mensagem criptografada, e caso valor do texto criptografado não esteja na tabela ASCII, ele não sera mostrado, ai não tem como o usuário descriptografar corretamente. O que você pode fazer é usar vezes e armazenar os resultados em um vetor de int, ai no momento de descriptografar retornar para um vetor de char, assim:

 


#include<stdio.h>
#include<string.h>
int main()
{
        char msg[999];
        int crip_msg[999];
        int tam_msg;
        int i;

        //encrypt
        printf("\n Digite texto ou palavra a ser criptografada: ");
        scanf("%s", &msg);

        tam_msg = strlen(msg);
        for(i=0;i<tam_msg;i++)
        {
                crip_msg[i] = (msg[i])*5;
        }

        for(i=0;i<tam_msg;i++)
        printf("\n A mensagem criptografada e : %d", crip_msg[i]);


        //decrypt
        printf("\n Digite mensagem a ser descriptografada:\n");
        for(i=0; i<tam_msg; i++)
        scanf("%d",&crip_msg[i]);

        for(i=0;i<tam_msg;i++)
        {
                msg[i] = (int)(crip_msg[i])/5;
        }

        printf("\n A mensagem descriptografada e : %s\n\n", msg);
        return 0;
}

 

Olha ai estou tentando fazer um menu porém esta dandos esses dois erros 1- [Error] expected '}' at end of input.

2-[Error] expected '(' before '{' token

 

 

 

Codigo

 

 

#include<conio.h>
#include<stdio.h>
#include<string.h>
int main()
{

char msg[999];
char crip_msg[999];
int tam_msg;
int i;
int escolha;
//menu
printf("Digite 1-Criptografar\n 2-Descriptografar");
scanf("%d",&escolha);
if{
((escolha) == 1);


//crip
printf("\n Digite texto ou palavra a ser criptografada:");
scanf("%s",msg);
tam_msg = strlen(msg);
for(i=0;i<tam_msg;i++)
{
crip_msg = (msg) *4 ;
}
printf("\n A mensagem criptografada e :%s",crip_msg);}

//Descrip
else if {
((escolha) == 2);

printf("\n Digite mensagem a ser descriptografada:");
for(i=0; i<tam_msg; i++)
scanf("%s",&crip_msg);

tam_msg = strlen(crip_msg);
for(i=0;i<tam_msg;i++)
{

msg = (int)(crip_msg / 4);
}
printf("\n A mensagem descriptograda e:  %s",msg);
}


getch();

return 0;
}
 

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Quando postar use <>, para o código ficar mais visível.

 

#include<conio.h>
#include<stdio.h>
#include<string.h>
int main(){
	char msg[999];
	char crip_msg[999];
	int tam_msg;
	int i;
	int escolha;

	//menu
	printf("Digite 1-Criptografar\n 2-Descriptografar");
	scanf("%d",&escolha);

	if(escolha == 1){
	//crip
	printf("\n Digite texto ou palavra a ser criptografada:");
	scanf("%s",msg);
	
    tam_msg = strlen(msg);
	for(i=0;i<tam_msg;i++)
	{
		crip_msg = (msg) *4 ;
	}

    printf("\n A mensagem criptografada e :%s",crip_msg);
    }
    //Descrip
    else if(escolha == 2){
    printf("\n Digite mensagem a ser descriptografada:");

	for(i=0; i<tam_msg; i++)
	scanf("%c",&crip_msg[i]);

	tam_msg = strlen(crip_msg);
	for(i=0;i<tam_msg;i++)
    {
		msg = (int)(crip_msg[i] / 4);
	}
  
	printf("\n A mensagem descriptograda e:  %s",msg);
	}
getch();
return 0;
}

Você colocou chave no if { ((escolha)

  • Curtir 2

Compartilhar este post


Link para o post
Compartilhar em outros sites
9 minutos atrás, TYSQUARE89 disse:

Quando postar use <>, para o código ficar mais visível.

 


#include<conio.h>
#include<stdio.h>
#include<string.h>
int main(){
	char msg[999];
	char crip_msg[999];
	int tam_msg;
	int i;
	int escolha;

	//menu
	printf("Digite 1-Criptografar\n 2-Descriptografar");
	scanf("%d",&escolha);

	if(escolha == 1){
	//crip
	printf("\n Digite texto ou palavra a ser criptografada:");
	scanf("%s",msg);
	
    tam_msg = strlen(msg);
	for(i=0;i<tam_msg;i++)
	{
		crip_msg = (msg) *4 ;
	}

    printf("\n A mensagem criptografada e :%s",crip_msg);
    }
    //Descrip
    else if(escolha == 2){
    printf("\n Digite mensagem a ser descriptografada:");

	for(i=0; i<tam_msg; i++)
	scanf("%c",&crip_msg[i]);

	tam_msg = strlen(crip_msg);
	for(i=0;i<tam_msg;i++)
    {
		msg = (int)(crip_msg[i] / 4);
	}
  
	printf("\n A mensagem descriptograda e:  %s",msg);
	}
getch();
return 0;
}

Você colocou chave no if { ((escolha)

valeu cara você e fera me ajudou muito

  • Curtir 2

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações 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

×