Ir para conteúdo

Featured Replies

Postado

Estava testando algumas funções e fiz esse código aqui, ele é bem simples mas ajuda a entender uma criptografia bem simples, leitura e escrita em arquivos, a utilização do switch e funções.

Este programa lê uma senha informada pelo usuario e compara com a senha salva em "data.txt", nota-se que ela estará criptografada lá com o carácter equivalente a 2 acima do informado pelo usuario na tabela asc, exemplo: B vai ser salvo como D no arquivo, 1 como 3, e por ai vai.

Após um login com sucesso ele fornece a opção de alterar a senha com o switch e termina o programa.

 

#include <stdio.h>
#include <string.h>

void Cript(char p[20]); //Criptografa nova senha e salva no arquivo data.txt
void DCript(char p[20]); //Descriptografa senha salva no arquivo
int CheckPass(char p[20]); //Compara se a senha informada e a do arquivo são iguais

int main()
{
	int check = 1;
	char pass[20], c;
	
	while(check != 0)
	{
		printf("Password: ");
		scanf("%s", pass);
		getchar();
		check = CheckPass(pass);
	}
	
	printf("Acess allowed!\n");
	printf("a) Change password\n");
	scanf("%c", &c);
	getchar();

		switch(c)
		{
			case 'a':
				{
					printf("Enter the new password: ");
					scanf("%s", pass);
					Cript(pass);	
				}
				break;
		}
	
	return 0;
}

void Cript(char p[20])
{
	int i;
	FILE *pf;
		for(i=0; p[i] != '\0'; i++)
			p[i] = p[i]+2;
			
	pf = fopen("data.txt", "w");
	if(pf != NULL)
	{
		fprintf(pf, "%s", p);
	}
	fclose(pf);
	
	printf("Password changed!\n");
	
}

void DCript(char p[20])
{
	int i;
		for(i=0; p[i] != '\0'; i++)
			p[i] = p[i]-2;
}

int CheckPass(char p[20])
{
	char pcripted[20]="";
	FILE *pFile;
	pFile = fopen("data.txt", "r");
	if (pFile != NULL)
	{
		fscanf(pFile, "%s", pcripted);
	}
	fclose(pFile);
	DCript(pcripted);
	
	if(pcripted[0] == '\0') //Caso não haja nenhuma senha no arquivo, qualquer valor entrado será valido para o acesso
		return 0;
	
		return strcmp(pcripted, p); //Quando as duas strings forem iguais retornará 0
			
}

 

  • Respostas 8
  • Visualizações 1.3k
  • Created
  • Última resposta

Top Posters In This Topic

Most Popular Posts

  • antes de dar minhas considerações esqueçam a palavra encriptar e codificado. é um termo horrível para tentar se expressar, a melhor definição é algoritmos para esconder o real conteúdo.  

  • 4 weeks later...
Postado

Normalmente uma encriptação é uma via de mão única, você vai mas não volta. Por isso elas são "seguras", pois caso alguém ganhe acesso a várias senhas, ele não consegue descobrir seu formato em plaintext.

 

Um exemplo seria em OT mesmo, que usa uma criptografia que se não me engano é SHA1 (Os mais novos). O que um OT faz? Quando você cria uma conta, com a senha '123456', ele encripta a senha para '7c4a8d09ca3762af61e59520943dc26494f8941b'. Quando você tenta logar no servidor, ele não pega o encriptado, 'desencripta' e compara com plain-text, ele encripta a senha que você mandou e compara com a senha encriptada. Assim você realmente tem uma certa segurança. 

Postado
  • Autor
Em 02/12/2015 10:47:20, Elwyn disse:

Normalmente uma encriptação é uma via de mão única, você vai mas não volta. Por isso elas são "seguras", pois caso alguém ganhe acesso a várias senhas, ele não consegue descobrir seu formato em plaintext.

 

Um exemplo seria em OT mesmo, que usa uma criptografia que se não me engano é SHA1 (Os mais novos). O que um OT faz? Quando você cria uma conta, com a senha '123456', ele encripta a senha para '7c4a8d09ca3762af61e59520943dc26494f8941b'. Quando você tenta logar no servidor, ele não pega o encriptado, 'desencripta' e compara com plain-text, ele encripta a senha que você mandou e compara com a senha encriptada. Assim você realmente tem uma certa segurança. 

 

Amigo, criptografia é você codificar um texto, o texto é codificado baseado em uma função. Quem cria a criptografia consegue sim descriptografar, quem possui a "chave" que foi utilizada para criptografar consegue retornar ao texto original, é claro que criar uma criptografia e liberar a "chave" dela pela internet perde todo sentido de criar uma criptografia, o método acima citado é apenas um exemplo de uma bem simples que eu mesmo inventei como exemplo, se eu quisesse multiplicar o o código referente a cada digito por um número primo gigante dificilmente alguem decifraria sem conhecimentos no assunto, mas não deixa de ser criptografia por ser simples, seja simples ou complexa ainda é criptografia.

Postado
2 horas atrás, alfbru disse:

Amigo, criptografia é você codificar um texto, o texto é codificado baseado em uma função. Quem cria a criptografia consegue sim descriptografar, quem possui a "chave" que foi utilizada para criptografar consegue retornar ao texto original, é claro que criar uma criptografia e liberar a "chave" dela pela internet perde todo sentido de criar uma criptografia, o método acima citado é apenas um exemplo de uma bem simples que eu mesmo inventei como exemplo, se eu quisesse multiplicar o o código referente a cada digito por um número primo gigante dificilmente alguem decifraria sem conhecimentos no assunto, mas não deixa de ser criptografia por ser simples, seja simples ou complexa ainda é criptografia.

 

Citar

Normalmente uma encriptação é uma via de mão única, você vai mas não volta. Por isso elas são "seguras", pois caso alguém ganhe acesso a várias senhas, ele não consegue descobrir seu formato em plaintext.

 

Não discordei de você. Apenas notei que para encriptação, principalmente de senha, é preferível usar uma encriptação de mão única.

Participe da conversa

Você pode postar agora e se cadastrar mais tarde. Se você tem uma conta, faça o login para postar com sua conta.

Visitante
Responder

Quem Está Navegando 0

  • Nenhum usuário registrado visualizando esta página.

Estatísticas dos Fóruns

  • Tópicos 96.9k
  • Posts 519.6k

Informação Importante

Confirmação de Termo