Ir ao conteúdo

Posts recomendados

Postado

Alguem consegue me dar uma luz pra rodar esse algoritmo? A ideia do exercício é outra mas só queria conseguir fazer rodar a parte que está dando erro pra mim conseguir executar o que se pede no exercício:

Citação

A operação ou-exclusivo bit-a-bit (^), tem a seguintes propriedades: (i) x^0 = x, (ii) x^x = 0 e (ii) (x^y)^z = x^(y^z). Usando essa operação podemos criar um método de criptografia com senha. Seja m um caracter da mensagem e s um caracter da senha. Para criptografar m, fazemos m^s e obtermos o caracter criptografado c. Para ter m de volta, basta fazer c^s. Como c = (m^s), pelas propriedades acima, segue que c^s = (m^s)^s = m^(s^s) = m^0 = m. Usando esse método, crie um programa para criptografia que receba a senha e os nomes dos arquivos de origem e destino via argumentos da linha de comando. [Dica: utilize as letras da senha ciclicamente, de modo que os caracteres da mensagem não sejam criptografados sempre com a mesma letra] 

#include <stdio.h>
#include <stdlib.h>

int main()
{

    FILE *m,*s;

    char nome[100];

    printf("\nArquivo? ");
    gets(nome);

    s = fopen("c:/temp/temporario","wb");
    if( s==NULL )
    {
        printf("\nArquivo não pode ser aberto");
        exit(1);
    }

    m = fopen(nome,"rb");
    if( m ==NULL )
    {
        printf("\nArquivo não pode ser aberto");
        exit(1);
    }

    char caracter;

    while(1)
    {
        caracter = fgetc(m);  //pega caracter a caracter
        if (feof(m))  // se achou o fim de arquivo, sai do laco
            break;
        fputc(~caracter,s);
        caracter = (m^s);

    }

    fclose(m);
    fclose(s);

    unlink(nome);  // apaga a origem
    rename("c:/temp/temporario",nome);

    return 0;
}

 

  • Curtir 1
Postado

Pelo que entendi você deve pegar caracter por caracter do arquivo de entrada e fazer o XOR ( ^ ) com um caracter de uma senha, sendo que esse caracter deve ficar alternando ciclicamente por essa senha. Por exemplo:

 

ENTRADA: "palavra"

SENHA: "abc"

 

SAÍDA:  'p'^'a'

              'a'^'b'

              'l'^'c'

              'a'^'a'

              'v'^'b'

              'r'^'c'

              'a'^'a'

 

E esse resultado você salva no arquivo de saída.

  • Curtir 3
Postado

@MassakiMsk Sim na verdade seria uma criptografia da senha, e depois que rodar novamente descriptografava ela, só que ta dando erro nessa linha:
 

Citação

caracter = (m^s);

Error: invalid operands of types 'FILE* {aka_iobuf*}' and 'FILE* {aka_iobuf*}' to bi..

Saberia me dizer qual o problema? Apenas comecei com essa parte de arquivos então não tenho noção dos possíveis erros, agradeço!

 

Crie uma conta ou entre para comentar

Você precisa ser um usuário 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 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...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!