Off desafio criptografia java

Boa noite Amigos do GUJ, até que ponto códigos de criptografia baseado em cálculos e cifragem seguindo a estrutura pessoal de cada programador é seguro???, ah muito tempo teve um post sobre desafio criptografia, onde vários postavam seus códigos e vários tentavam descriptografar… Proponho uma continuação… rsssss

Segue abaixo uma Classe feita por mim, tem 2 exemplo e o desafio (destacado em negrito)…

[code]
Exemplo 1
Criptografado: UM56MO56NZ56sOJ:TM8:mMI:rL9;MMH:VN46lM5ISNG:rQJ8=UF4
Descriptografado: Olá mundo!!!

Exemplo 2
Criptografado: TL7;OL5:TPH:sP9:vV8;r;pL=:sM79oY46pQ9:YL8:tO46MZJ:VM8;zNI:uX9:nXH:qN=:LM:;nUG:wWJ:LM:;qNI:MR9:LO7;mQ9:VL88qS46LN9:uT46oN9:PN7;OL=:MMG:NU5ILLI:VM58V6NUH:nX9:MP46nL5:MP=:QM;:lUJ:UTG:mMJ:\NI:\N7:WV9:nM89mT46uL6;lN9:lW6:WO5:lL7;NM=:xLI:NN99=NN4
Descriptografado: Unisaber Tecnologia em Análise e Desenvolvimento de Sistemas

Desafio
Criptografado: ML7;\LJ:LN8;NMI:YN5:VQ79lL46mWG:sP5:LL9:MSG8uZ46nN6;nM=:mMI:OS5:lPH:NM6;ML9:mL;8rL46lYG6nO=6sN=7LN47lP47VZ67nNJ6OT=7mL47wNJ6MU67mL67xT<6mN46mL56nW56SL56rSI:\N=:nM9:SM8;SO7;sOI:YL=:PO98LM46VL7;XLI:mN=ILO6:LW5:XL6;mL5:WY49lLG6vM6FML78MVI6lNH8LNH7zL98=BP4
Descriptografado: ?[/code]

Alguém se habilita???
Att +++++++

Se for realmente tão importante não é seguro não ^^

Esse é o X da questão, não é pra uso vital como comunicação militar (essa foi boa rsss) ou algo parecido…

ALGUNS PODEM DIZER QUE NÃO É SEGURO, MAS SERÁ QUE ALGUM PROGRAMADOR JAVA CONSEGUE QUEBRAR O CÓDIGO?

Se fosse vital, esteja certo que alguém descobriria. Estou tentando aqui. Me dê tempo e consigo tambem.

WTF?
To pensando em um algoritimo que faria isso aqui…
Mas eh bem fodinha…
Para um programador java experiente talvez seja simples :stuck_out_tongue:
Amanha vou tentar fazer… rs

Oi,

Criptografia pessoal leva alguns conceitos. Para descubrir sua codificação é necessário ter um certo conhecimento sobre a pessoa de quem a desenvolveu.
Toda a codificação criptografada, deverá ter um padrão! até para a pessoa que fez a codificação conseguir decifra-la depois.

Dei uma olhada rapida nesse post e já verifiquei que você não adota nenhum padrão para reconhecimento de caracteres. Ou seja, será uma perda de tempo tentar decifra-lo.

É o mesmo que fazer:

Criptografado: ALÇEKAEÇK;8972348974asfj`SFJfp;sfoijfiofjafx87e8f733s&&w89sdu9su98&*(&897wr98789s7
Descriptografado: Pai, eu quero andar de bicicleta.

Criptografado: -085895789457dgfklsdgjdsoijoijd/~çlaseóspwi/2827328927;344;4343;4343;
Descriptografado: Pai, eu quero andar de bicicleta.

Tchauzin!

[quote]Oi,

Criptografia pessoal leva alguns conceitos. Para descubrir sua codificação é necessário ter um certo conhecimento sobre a pessoa de quem a desenvolveu.
Toda a codificação criptografada, deverá ter um padrão! até para a pessoa que fez a codificação conseguir decifra-la depois.

Dei uma olhada rapida nesse post e já verifiquei que você não adota nenhum padrão para reconhecimento de caracteres. Ou seja, será uma perda de tempo tentar decifra-lo.

É o mesmo que fazer:

Criptografado: ALÇEKAEÇK;8972348974asfj`SFJfp;sfoijfiofjafx87e8f733s&&w89sdu9su98&*(&897wr98789s7
Descriptografado: Pai, eu quero andar de bicicleta.

Criptografado: -085895789457dgfklsdgjdsoijoijd/~çlaseóspwi/2827328927;344;4343;4343;
Descriptografado: Pai, eu quero andar de bicicleta.

Tchauzin![/quote]
Oi lina,

Para iniciar GOSTARIA DE INFORMÁ-LA que o processo de criptografia e descriptografia é feito pela Classe java que desenvolvi.

VOCÊ acha que eu perderia meu tempo em fazer algo sem sentido??? A lógica está justamente em se "esconder" o padrão de criptografia utilizado, afim de dificultar o trabalho de hackersss. MAS JÁ ESTOU UM POUCO SATISFEITO pois a minha codificação está tão cifrada que você "achou" que o texto não tem sentido.

Se o padrão fosse revelado ai era fazer apenas o cara-crachá seria fácil demais não acha?

Realmente existe uma mensagem criptografada no texto:

L7;\LJ:LN8;NMI:YN5:VQ79lL46mWG:sP5:LL9:MSG8uZ46nN6;nM=:mMI:OS5:lPH:NM6;ML9:mL;8rL46lYG6nO=6sN=7LN47lP47VZ67nNJ6OT=7mL47wNJ6MU67mL67xT<6mN46mL56nW56SL56rSI:\N=:nM9:SM8;SO7;sOI:YL=:PO98LM46VL7;XLI:mN=ILO6:LW5:XL6;mL5:WY49lLG6vM6FML78MVI6lNH8LNH7zL98=BP4

O desafio é tentar quebrar esta criptografia, e debater sobre novas técnicas.

Nós conhecemos vários padrões de CRIPTOGRAFIA simétrica (DES, o IDEA e o RC) mas até que ponto um padrão feito por nós mesmo é 100% seguro???
Muitos podem dizer que não é… Mas SERÁ QUE EXISTE ALGUÉM QUE POSSA QUEBRAR?

ATENÇÃO! Nada de responder "um hacker quebra" sem essa de Estereótipos disso ou daquilo…

Vamos tentar!!! Rsss :wink:

Posteriormente irei divulgar a Classe para fins de estudos e aprimoramento.

Parabéns, se vc esta se cabando tanto, de seu algoritmo de criptografia , ou seja nao eh nada alem disto de um belo algoritmo que esconde uma informação ,
lançar desafio para quem possa quebralo … bom meio sem lógica para um forum de resolução de duvidas nao ? ( se fosse o caso deveria ser movido para “off Topic”) , pois cada pessoa implementa de maneira diferente , independente da linguagem , ou seja , vc pode muito bem ter algoritmo somente de Ida ou seja criptrografa dai para saber se a chave esta certa , vc tem q pegar a chave x criptrografar eh verificar se
a mesma eh igual a salva em determinado local .

[quote=edmarr]Parabéns, se vc esta se cabando tanto, de seu algoritmo de criptografia , ou seja nao eh nada alem disto de um belo algoritmo que esconde uma informação ,
lançar desafio para quem possa quebralo … bom meio sem lógica para um forum de resolução de duvidas nao ? ( se fosse o caso deveria ser movido para “off Topic”) , pois cada pessoa implementa de maneira diferente , independente da linguagem , ou seja , vc pode muito bem ter algoritmo somente de Ida ou seja criptrografa dai para saber se a chave esta certa , vc tem q pegar a chave x criptrografar eh verificar se
a mesma eh igual a salva em determinado local .

[/quote]

Que pena EDMAR que você tenha está idéia. Não estou me gabando de nada.

O interessante é: “O que seria um algorítmo que esconde uma informação?” ORA um algorítimo de criptografia…

O que seria criptografia? (Você deve saber >> Googlaaa…)

Sobre seu conceito de fórum tenho que discordar, um fórum não é simplesmente um local onde se tira dúvidas, mas também é um local onde se compartilha informações, discute-se artigos, novas técnicas, padrões e etc. É muito mais amplo do que apenas um TIRA DÚVIDAS.

VOLTANDO AO ASSUNTO…

SE ALGUÉM TIVER ALGUM CÓDIGO DE CRIPTOGRAFIA E QUISER COMPARTILHAR, VAMOS TESTAR A FORÇA DE NOSSOS CÓDIGOS.

Bom, de cara dá para perceber alguns padrões.

Cada letra do texto plano corresponde a 4 letras do texto criptografado. O texto criptografado ainda apresenta 4 letras de overhead, que pode ser o valor de alguma chave, para que você possa descriptografar depois.

Não terei tempo de fazer uma análise mais detalhada, mas se a segurança de sua criptografia estiver no algoritmo, e não num processo matemático, posso garantir que ela é baixa. E você dá claros indícios disso ao não publicar o seu código logo no primeiro post.

De qualquer forma, é interessante o desafio. Não deixe de postar a resposta daqui a uma semana ou duas semanas… Até pro pessoal ter tempo de ler e analisar (eu mesmo, se for fazer, só poderia no final de semana).

[quote=java]Realmente existe uma mensagem criptografada no texto:

L7;\LJ:LN8;NMI:YN5:VQ79lL46mWG:sP5:LL9:MSG8uZ46nN6;nM=:mMI:OS5:lPH:NM6; ML9:mL;8rL46lYG6nO=6sN=7LN47lP47VZ67nNJ6OT=7mL47wNJ6MU67mL67xT<6mN46mL 56nW56SL56rSI:\N=:nM9:SM8;SO7;sOI:YL=:PO98LM46VL7;XLI:mN=ILO6:LW5:XL6;mL5:W Y49lLG6vM6FML78MVI6lNH8LNH7zL98=BP4[/quote]

Essa mensagem tem 62 caracteres, só cheguei até aí :slight_smile:

O algoritmo é realmente mão-dupla, né !?

Outro padrão… todo final criptografado é ‘=’ mais 3 caracteres.

Uma pergunta… o primeiro texto que foi Olá mundo!! tinha acento mesmo na hora de criptografar?

Fazer calculo sem levar em consideração isso pode alterar o resultado.

Se possivel posta um texto criptografado e sem acentos e caracteres especiais. Para ser mais justo^^

Eh… eita pessoal inteligente… estão chegando lá… :lol: :lol: :lol: :lol: :lol:

1-ViniGodoy você está certo em sua afirmação.
2-GomesRod você também está certo em sua afirmação.
3-Mark_ameba você (pra variar) também está certo.

JÁ TEMOS 3 CARACTERÍSTICAS

ps: Mark, todo character é criptografado, seja com acento, seja sem acento.

VAMOS LÁ PESSOAL… ESTÁ PERTO… MAIS ALGUÉM???

ps2: SE ALGUÉM TIVER ALGUM ALGORÍTIMO E QUISER COMPARTILHAR ESTAMOS AS ORDENS…

O que o Mark estava perguntando é qual o “encoding” que você usou para converter “Olá, mundo” para bytes. Se foi usada a Windows-1252, a letra ‘á’ foi convertida para 1 byte (0xE0); se foi usado o UTF-8, a letra “á” foi convertida para 2 bytes (0xC3 0xA0). Isso ajuda a saber qual é o “plaintext” correto.

Não sei se ajuda muito, mas percebo que tem sempre o caractere ‘4’ no final do texto cifrado.

Inté.

[quote=KWill]Não sei se ajuda muito, mas percebo que tem sempre o caractere ‘4’ no final do texto cifrado.

Inté.[/quote]

Nem sempre Will veja:

Criptografado: mV45nM<6nM36KY36M[56RLG5kOD7kK88KM:7KL35MYI9KK79sK35oN6:QRI9VU:9VL<9TLG9SR47[L35kTI9NL79VMH9xT<9lL98KLG5nKG9oT89mT57kS35mNG9YT49LKD9kP89pL68=JQ3 Descriptografado: Sejam Bem-Vindo Amigos do GUJ-2009!

:wink:

Aham, sinto muito discordar. Os algoritmos modernos de criptografia usam conceitos como “IV” (initialization vector) e “salt” , de modo que para um mesmo dado normal (“plaintext”) possam corresponder inúmeros dados cifrados (“ciphertext”).

Por exemplo, usando o openssl, com a cifra “aes-256-cbc”, e a senha “pedrinho”, para o plaintext “Pai, eu quero andar de bicicleta.”, podemos obter o seguinte arquivo binário:

0000    53 61 6C 74 65 64 5F 5F  09 9A 34 4E A6 C9 88 5C   Salted__..4N...\
0010    C3 04 C0 C6 DD 05 DA 48  F3 EA 69 FF 1D 34 4A 16   .......H¾Ûi..4J.
0020    35 96 FB E0 50 0A E4 09  2E A7 28 A8 46 BE 1F F7   5.¹.P.....(.F..¸
0030    82 A6 74 74 8F F8 23 D3  48 A0 8F 61 3E 19 99 BD   ..tt.°#.H..a>...

ou então:

0000    53 61 6C 74 65 64 5F 5F  EA CD EA CF DA 23 32 8C   Salted__Û.Û..#2.
0010    D9 C3 A7 ED A0 7F 70 74  5D 15 0E 55 28 01 E0 D9   ...Ý..pt]..U(...
0020    0A 2C 6E 72 92 C5 BD 1B  E8 AA 2D 15 5A 92 F6 D3   .,nr......-.Z.÷.
0030    26 3A 48 1C CF F1 5E 94  DD 32 72 04 D6 FA 99 1C   &:H...^..2r.....

Vejam se isso ajuda. Chamei de palavra aos 4 caracteres correspodentes a cada caracter do texto plano e de frase ao conjunto de palavras. :roll:
Não sei se pode ser útil mas alguém pode incluir os valores em base 64 também.

[code]public class Cypher {

public static void main(String[] args) {
cript();
}

public static void cript() {
String cypher = “UM56MO56NZ56sOJ:TM8:mMI:rL9;MMH:VN46lM5ISNG:rQJ8=UF4”;
String text = “Olá mundo!!!”;
// String cypher = “TL7;OL5:TPH:sP9:vV8;r\7;pL=:sM79oY46pQ9:YL8:tO46MZJ:VM8;” +
// “zNI:uX9:nXH:qN=:LM:;nUG:wWJ:LM:;qNI:MR9:LO7;mQ9:VL88qS46LN9:uT46oN9:PN7;” +
// “OL=:MMG:NU5ILLI:VM58V\46NUH:nX9:MP46nL5:MP=:QM;:lUJ:UTG:mMJ:\NI:\N7:” +
// “WV9:nM89mT46uL6;lN9:lW6:WO5:lL7;NM=:xLI:NN99=NN4”;
// String text = “Unisaber Tecnologia em Análise e Desenvolvimento de Sistemas”;
char[] cc = cypher.toCharArray();
char[] tc = text.toCharArray();

  System.out.print(cypher.length() + " caracteres: ");

  for (char c : cc) {
     System.out.print(c);
  }
  System.out.println();
  System.out.print(text.length() + " caracteres: ");

  for (char c : tc) {
     System.out.print(c);
  }

  System.out.println("\n\nTabelas com Palavras e ASCII correspodentes\n");
  System.out.println("Ordem normal:");
  for (int i = 0; i < tc.length; i++) {
     int t = 4 * i;
     System.out.printf("%s: %s%s%s%s | %03d: %03d %03d %03d %03d\n", tc[i], cc[t], cc[t + 1], cc[t + 2],
           cc[t + 3], (int) tc[i], (int) cc[t], (int) cc[t + 1], (int) cc[t + 2], (int) cc[t + 3]);
  }

  System.out.println("\nFrase invertida:");
  for (int i = 0; i < tc.length; i++) {
     int t = 4 * (tc.length - i - 1);
     System.out.printf("%s: %s%s%s%s | %03d: %03d %03d %03d %03d\n", tc[i], cc[t], cc[t + 1], cc[t + 2],
           cc[t + 3], (int) tc[i], (int) cc[t], (int) cc[t + 1], (int) cc[t + 2], (int) cc[t + 3]);
  }

  System.out.println("\nFrase e Palavras invertidas:");
  for (int i = 0; i < tc.length; i++) {
     int t = 4 * (tc.length - i - 1);
     System.out.printf("%s: %s%s%s%s | %03d: %03d %03d %03d %03d\n", tc[i], cc[t + 3], cc[t + 2], cc[t + 1],
           cc[t], (int) tc[i], (int) cc[t + 3], (int) cc[t + 2], (int) cc[t + 1], (int) cc[t]);
  }

}
}[/code]

Tô aqui me perguntando o porquê de ter colocado aqueles dois primeiros for para imprimir as duas Strings. Acho que ia fazer outra coisa e acabei esquecendo.
Pra quem tá com preguiça de rodar o programa em casa:

[code]52 caracteres: UM56MO56NZ56sOJ:TM8:mMI:rL9;MMH:VN46lM5ISNG:rQJ8=UF4
12 caracteres: Olá mundo!!!

Tabelas com Palavras e ASCII correspodentes

Ordem normal:
O: UM56 | 079: 085 077 053 054
l: MO56 | 108: 077 079 053 054
á: NZ56 | 225: 078 090 053 054
: sOJ: | 032: 115 079 074 058
m: TM8: | 109: 084 077 056 058
u: mMI: | 117: 109 077 073 058
n: rL9; | 110: 114 076 057 059
d: MMH: | 100: 077 077 072 058
o: VN46 | 111: 086 078 052 054
!: lM5I | 033: 108 077 053 073
!: SNG: | 033: 083 078 071 058
!: rQJ8 | 033: 114 081 074 056

Frase invertida:
O: rQJ8 | 079: 114 081 074 056
l: SNG: | 108: 083 078 071 058
á: lM5I | 225: 108 077 053 073
: VN46 | 032: 086 078 052 054
m: MMH: | 109: 077 077 072 058
u: rL9; | 117: 114 076 057 059
n: mMI: | 110: 109 077 073 058
d: TM8: | 100: 084 077 056 058
o: sOJ: | 111: 115 079 074 058
!: NZ56 | 033: 078 090 053 054
!: MO56 | 033: 077 079 053 054
!: UM56 | 033: 085 077 053 054

Frase e Palavras invertidas:
O: 8JQr | 079: 056 074 081 114
l: :GNS | 108: 058 071 078 083
á: I5Ml | 225: 073 053 077 108
: 64NV | 032: 054 052 078 086
m: :HMM | 109: 058 072 077 077
u: ;9Lr | 117: 059 057 076 114
n: :IMm | 110: 058 073 077 109
d: :8MT | 100: 058 056 077 084
o: :JOs | 111: 058 074 079 115
!: 65ZN | 033: 054 053 090 078
!: 65OM | 033: 054 053 079 077
!: 65MU | 033: 054 053 077 085[/code]

[quote=ozix]Tô aqui me perguntando o porquê de ter colocado aqueles dois primeiros for para imprimir as duas Strings. Acho que ia fazer outra coisa e acabei esquecendo.
Pra quem tá com preguiça de rodar o programa em casa:

[code]52 caracteres: UM56MO56NZ56sOJ:TM8:mMI:rL9;MMH:VN46lM5ISNG:rQJ8=UF4
12 caracteres: Olá mundo!!!

Tabelas com Palavras e ASCII correspodentes

Ordem normal:
O: UM56 | 079: 085 077 053 054
l: MO56 | 108: 077 079 053 054
á: NZ56 | 225: 078 090 053 054
: sOJ: | 032: 115 079 074 058
m: TM8: | 109: 084 077 056 058
u: mMI: | 117: 109 077 073 058
n: rL9; | 110: 114 076 057 059
d: MMH: | 100: 077 077 072 058
o: VN46 | 111: 086 078 052 054
!: lM5I | 033: 108 077 053 073
!: SNG: | 033: 083 078 071 058
!: rQJ8 | 033: 114 081 074 056

Frase invertida:
O: rQJ8 | 079: 114 081 074 056
l: SNG: | 108: 083 078 071 058
á: lM5I | 225: 108 077 053 073
: VN46 | 032: 086 078 052 054
m: MMH: | 109: 077 077 072 058
u: rL9; | 117: 114 076 057 059
n: mMI: | 110: 109 077 073 058
d: TM8: | 100: 084 077 056 058
o: sOJ: | 111: 115 079 074 058
!: NZ56 | 033: 078 090 053 054
!: MO56 | 033: 077 079 053 054
!: UM56 | 033: 085 077 053 054

Frase e Palavras invertidas:
O: 8JQr | 079: 056 074 081 114
l: :GNS | 108: 058 071 078 083
á: I5Ml | 225: 073 053 077 108
: 64NV | 032: 054 052 078 086
m: :HMM | 109: 058 072 077 077
u: ;9Lr | 117: 059 057 076 114
n: :IMm | 110: 058 073 077 109
d: :8MT | 100: 058 056 077 084
o: :JOs | 111: 058 074 079 115
!: 65ZN | 033: 054 053 090 078
!: 65OM | 033: 054 053 079 077
!: 65MU | 033: 054 053 077 085[/code][/quote]

OZIX LEGAL, Usando a técnica PlainText Atack você consegiu (em uma das 3 tentativas descobrir o padrão, ainda não vou dizer qual… rss).

PlainText Atack, de posse do texto limpo (PlainText) e do texto crifrado (CypherText) e possível identificar o padrão de cryptografia utilizado…

No meu exemplo, o detalhe é que para cada criptografia feita as chaves e os valores são diferentes (prevendo um possível PlainText Atack), e sem o Texto Descriptografado é impossível (com esta técnica) chegar ao resultado de outras criptografias…

Um exemplo disso é o fato de que com este algorítimo não é possível chegar ao texto do DESSAFIO:

Desafio Criptografado: ML7;\LJ:LN8;NMI:YN5:VQ79lL46mWG:sP5:LL9:MSG8uZ46nN6;nM=:mMI:OS5:lPH:NM6;ML9:mL;8rL46lYG6nO=6sN=7LN47lP47VZ67nNJ6OT=7mL47wNJ6MU67mL67xT<6mN46mL56nW56SL56rSI:\N=:nM9:SM8;SO7;sOI:YL=:PO98LM46VL7;XLI:mN=ILO6:LW5:XL6;mL5:WY49lLG6vM6FML78MVI6lNH8LNH7zL98=BP4 Descriptografado: ?

Achei SUPER interessante a técnica que você utilizou :wink:

Estão cada vez mais perto.
:wink: :lol: :lol: :lol: :lol: