Criptografia - reverso de mod

Bom dia pessoal! :smiley:

Estou com uma pequena dúvida e agradeceria a quem pudesse ajudar a esclarecê-la:

Tenho um algoritmo de criptografia que criptografa o texto a partir da seguinte regra: somo uma quantidade de posições ao dígito inicial e depois faço o módulo por 10 (mod 10).

Mas na hora de decriptar que está o problema… :? Primeiro eu tenho que diminuir as x posições somadas, e depois reverter a operação módulo. Mas, como se reverte uma operação de módulo??? Como eu vou conseguir chegar ao número inicial (desconhecido) utilizando apenas o resto da divisão desse número por outro número (também desconhecido) ?

Valeu!

:wink:

Você é quem inventou esse algoritmo? O “módulo” não é reversível porque é uma operação “muitos para um”. Por exemplo, 10 % 10 == 0, mas 20 % 10 também é 0.
Criptografia não é para amadores.
Leia o livro do Schneier (Applied Cryptography) primeiro.

[quote=thingol]Você é quem inventou esse algoritmo? O “módulo” não é reversível porque é uma operação “muitos para um”. Por exemplo, 10 % 10 == 0, mas 20 % 10 também é 0.
Criptografia não é para amadores.
Leia o livro do Schneier (Applied Cryptography) primeiro.

[/quote]

Pois é, thingol, não fui eu quem inventei esse algoritmo, ele está até no livro do Deitel. Mas também pretendo usá-lo como parte do meu projeto em criptografia na universidade. Conversando com minha professora ela afirma que é possível sim, porém ela não revela a resposta…
E o mistério continua…

No seu projeto de criptografia na universidade é melhor usar um algoritmo tradicional criado e escrito por criptógrafos, como o AES ou o Triple-DES.

Eles são relativamente fáceis de serem usados e se você precisar dos fontes, é possível baixá-los junto com o JDK.

Que eu saiba os Deitels não são criptógrafos, mas professores de C++ (e talvez Java - digo isso porque eles têm uma grife, com livros que ensinam praticamente todas as linguagens :stuck_out_tongue: ).

Se eles deram um algoritmo (não tenho o livro deles), é só para exemplificar, não para usar a sério (não que não funcione; mas o problema é que não pode ser usado em uma aplicação séria).

Veja no site dos Deitels ( http://www.deitel.com/ ) sobre que coisas os Deitels, ou então gente que escreve para eles, escreveram:

Está me parecendo uma implementação do famoso algoritmo de Ceasar.

Neste caso, o algoritmo fará uma substituição simples de letras n casas para frente. Por exemplo, o nome Vinicius com a chave 1 ficaria Wjojdjvt.

N seria a chave. O número a esqueda do MOD o número máximo de letras naquele alfabeto. O algoritmo fica basicamente:

LetraCodificada = LetraPlana + Chave % NumeroDeLetras;

O módulo deve ser usado para os casos das últimas letras. Por exemplo, se a última letra for o valor 30 (supondo, Z), a próxima será o valor 0 (supondo, A).

Neste caso, a inversão do algoritmo é simples:

  1. Faça primeiro a subtração da chave;
  2. Se esse número for &lt 0 adicione o valor do lado esquerdo do MOD.

Só um detalhe: Esse algoritmo é extremamente fraco, especialmente porque a segurança reside no programa e não na chave criptografica utilizada.

[quote=Ferris]
Pois é, thingol, não fui eu quem inventei esse algoritmo, ele está até no livro do Deitel. Mas também pretendo usá-lo como parte do meu projeto em criptografia na universidade. Conversando com minha professora ela afirma que é possível sim, porém ela não revela a resposta…
E o mistério continua… [/quote]

Papo de professor … como o thingol disse, modulo é uma operação reversível.

Boa sorte

Esse livro é realmente muito bom. E vale a pena le-lo associado ao Secrets&Lies.

Uma das razões de ler os dois livros, citada pelo próprio Schneier, é que ler só o Applied Criptography pode dar a falsa sensação de que os algoritmos por si só te darão toda segurança necessária.

No segundo livro, ele já aborta aspectos extra-software que podem tornar a sua aplicação insegura, mesmo com o uso de criptografia.

Ah sim, o site do Schneier também é muito interessante:
http://www.counterpane.com

Falando em Criptografia, alguem já leu um livro chamado “Fortaleza Digital”…nesse livro falam sobre Criptografia, alguem ai conhece a implementação de uma Mensagem Clara Circular com caracteres mutantes…hehehe, é a estorinha do livro… :slight_smile:

Se você acredita no “Código da Vinci” (que é do mesmo autor … )

Autores de livros de ficção estão livres para inventarem o que quiserem. Alguns deles pesquisam mais a respeito dos assuntos que outros; não cheguei a ler o tal livro do Dan Brown. “Mensagem Clara” é o que chamamos em criptografia de “plaintext”, ou seja, é o texto original sem criptografia.

Eu nem li o Código da Vinci, mas eu li esse Fortaleza Digital, entendo bem pouco de Criptografia, e mesmo assim já achei meio absurda a abordagem do livro, só queria ter certeza de que era absurda mesmo… :slight_smile:

[quote=ViniGodoy]Está me parecendo uma implementação do famoso algoritmo de Ceasar.

Neste caso, o algoritmo fará uma substituição simples de letras n casas para frente. Por exemplo, o nome Vinicius com a chave 1 ficaria Wjojdjvt.

N seria a chave. O número a esqueda do MOD o número máximo de letras naquele alfabeto. O algoritmo fica basicamente:

LetraCodificada = LetraPlana + Chave % NumeroDeLetras;

O módulo deve ser usado para os casos das últimas letras. Por exemplo, se a última letra for o valor 30 (supondo, Z), a próxima será o valor 0 (supondo, A).

Neste caso, a inversão do algoritmo é simples:

  1. Faça primeiro a subtração da chave;
  2. Se esse número for &lt 0 adicione o valor do lado esquerdo do MOD.

Só um detalhe: Esse algoritmo é extremamente fraco, especialmente porque a segurança reside no programa e não na chave criptografica utilizada.[/quote]

Legal, entendi a questão a que você se refere, e acho que é desta forma mesmo. Valeu! :stuck_out_tongue:

Mas eu ainda vou continuar pesquisando essa questão do módulo, pois isso me intrigou em saber se pode ser ou não reversível :-o

E também vou dar uma lida nos livros citados

Valeu pessoal pela ajuda. :wink: Mais rápido impossível!!! :stuck_out_tongue: :stuck_out_tongue:

Ola… qual algoritmo de criptografia conhecida para se mandar mensagens String por uma rede??? Tipo, aqueles que possuem chaves parar “descriptografar” as mensagens…

SHA-256 e MD5 nao possuem chaves ou estou errado?

jopss :stuck_out_tongue: