Criptografia utilizando ANSI-C

Olá pessoal,

Boa noite!

Como projeto de faculdade, estou criando um sistema que deverá fazer criptografia e descriptografia.
Efetuando pesquisas na internet, encontrei um código que não estou conseguindo interpretar devidamente, ele faz a criptografia do arquivo, porém, não consigo entender a fórmula para fazer o caminho contrário - descriptografar:
Considerem que os ponteiros estão devidamente criados e funcionais, assim como as variáveis estão declaradas.
O código que estou utilizando para cifrar os dados é o abaixo:

     while(!feof(fp_le_arq_txt))
     {
        var_ls_sup_lei_arq=getc(fp_le_arq_original);
        var_ls_sup_lei_arq=~((var_ls_sup_lei_arq^i)); // efetua a criptografia dos dados, acho que alterando bit a bit...
        i+=2;
        if(i==10000000)
        {
          i=0;             
        }
        putc(var_ls_sup_lei_arq,fp_gr_arqu_processado);
     }

Não consegui interpretar uma maneira funcional de fazer o contrário, se os amigos puderem ajudar-me, agradeço…

Obrigado a todos,

[]s

Gustavo Matelucati

A decifração desses dados é feita usando exatamente o mesmo algoritmo.

Aliás, isso não é criptografia nem aqui, nem em Portugal, nem na China. É só uma maneira bem ingênua de esconder alguns dados.

Olá entanglement,

Boa tarde!

Bom saber que isto não é um tipo de criptografia, pensei que pudesse ser considerado.
Fiz o que você disse, utilizei o mesmo algoritmo para cifrar e decifrar o arquivo.
Bem, funcionou para o contexto, porém, estou estudando a biblioteca Cripto.DLL que acredito ter mais haver com o foco de segurança.
Obrigado por sua opinião,

[]s

Gustavo Matelucati

De onde você tirou essa “Cripto.DLL”?
A maneira padrão de criptografar algo é com a biblioteca OpenSSL.
Infelizmente ela não é trivial de usar, mas é a mais segura e a mais tradicional. Se você imaginar um algoritmo, provavelmente ele foi implementado lá da maneira mais segura possível.
Ela foi usada em diversos projetos (desde o Apache HTTP Server, usado em quase todos os web sites) e muitas companhias e instituições (como a finada Sun Microsystems, agora parte da Oracle) contribuíram para essa biblioteca.

http://www.openssl.org

Boa noite entanglement,

Excelente dica, muito obrigado.
Eu havia visto neste link http://www.dll-files.com/dllindex/dll-files.shtml?crypt32
Vou estudar esta dica.

Mais uma vez obrigado,

[]s

Gustavo Matelucati

[quote=entanglement]De onde você tirou essa “Cripto.DLL”?
A maneira padrão de criptografar algo é com a biblioteca OpenSSL.
Infelizmente ela não é trivial de usar, mas é a mais segura e a mais tradicional. Se você imaginar um algoritmo, provavelmente ele foi implementado lá da maneira mais segura possível.
Ela foi usada em diversos projetos (desde o Apache HTTP Server, usado em quase todos os web sites) e muitas companhias e instituições (como a finada Sun Microsystems, agora parte da Oracle) contribuíram para essa biblioteca.

http://www.openssl.org
[/quote]
entanglement
Você já tinho visto aqui no código do openssl?
/openssl-1.0.0b/crypto/x509

if (0) { end: X509_get_pubkey_parameters(NULL,ctx->chain); } if (0) { err: X509_free(ret); ret=NULL; }

Qual é o problema com o “if (0)” que é equivalente ao “if (false)” do Java, que serve para comentar um pedaço de código? Não acho nada errado com isso.

É que eu encontrei esse texto sobre o openssl.
Eu não sou programador profissional por isso o if(0) foi o que mais me chamou a atenção.
Nunca li em livro algum tal tipo de “recurso” para “comentar código”.