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) ?
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 ).
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:
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:
Faça primeiro a subtração da chave;
Se esse número for < 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.
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.
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…
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…
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:
Faça primeiro a subtração da chave;
Se esse número for < 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!
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. Mais rápido impossível!!!
Ola… qual algoritmo de criptografia conhecida para se mandar mensagens String por uma rede??? Tipo, aqueles que possuem chaves parar “descriptografar” as mensagens…