BigInteger(String) ?  XML
Índice dos Fóruns » Java Avançado
Autor Mensagem
ivo costa
JavaEvangelist
[Avatar]

Membro desde: 06/11/2007 12:07:34
Mensagens: 493
Localização: Porto Alegre - RS
Offline

Existe um programa open source que é o openp2m, o programa tem por finalidade compartilhar arquivos por e-mails (e é muito bom). Parando com a propaganda, eu estava olhando o código fonte do programa e vi que tem a função descriptografar e decidi fazer uma gambiarra que implementava aquela função pra descriptografar uma senha. Mas vejam só! no código fonte está sendo declarado uma variável do tipo BigInteger e como paramêtro uma String = "CHAVE". Achei isso estranho mas mesmo assim fui testar o código, e como esperado da erro nessa parte! Mas como pode o programa funcionar ao baixar via JNLP? Alguém tem ideia?



site do programa openp2m.sourceforge.net
codigo fonte do programa sourceforge.krugle.com/kse/files/cvs/cvs.sourceforge.net/openp2m/src-core/gui/LoginGUI

Eu sonho com um mundo melhor, onde galinhas que atravessam a rua não serão questionadas pelos seus motivos.
Formate o seu código usando as tags [code] http://www.guj.com.br/posts/list/50115.java
Faça perguntas inteligentes
[MSN]
rodrigoallemand
GUJ Ranger
[Avatar]

Membro desde: 21/02/2005 20:19:47
Mensagens: 972
Localização: Rio de Janeiro, Recreio!!!
Offline

Se a classe for java.lang.BigInteger e receber a string "CHAVE", vai dar zinabre mesmo...
Mas se for uma classe proprietaria com o nome de BigInteger, ai o cara faz mágica lá dentro...

Rodrigo Allemand

A culpa é minha e eu a coloco em quem eu quizer!. (Homer Simpson)
http://blog.rodrigoallemand.com.br
[WWW] [MSN]
ViniGodoy
Moderador
[Avatar]

Membro desde: 11/12/2006 08:22:01
Mensagens: 20580
Localização: Curitiba/PR
Offline

Eles devem ter retirado a chave dos fontes.
Você não achou que eles publicariam a chave interna deles, achou?

@ViniGodoy - Lattes

Tem dúvidas de Java? Poste no fórum! Não respondo dúvidas de java via MP!

Ponto V! - Desenvolvimento de Jogos Profissional - @Pontov - Facebook
Projeto Towel - Swing de uma forma inteligente (Novo lar do ObjectTableModel e do Auto-Filtro).

Ei... você está usando DefaultTableModel no seu projeto??
Não faça isso! Veja: http://www.guj.com.br/posts/list/15/199067.java#1001295
[WWW]
thingol
Moderador

Membro desde: 29/07/2004 16:10:13
Mensagens: 17543
Offline

Provavelmente, se você olhar os fontes ou a documentação vai aprender como é que se gera a tal chave.
Dá a impressão que precisa de um processo um pouco complexo, já que o nome da classe é RSA e provavelmente o tal número é uma chave privada, que deve ser gerada por um processo especial (não dá para simplesmente espetar qualquer número lá.)
[WWW]
ivo costa
JavaEvangelist
[Avatar]

Membro desde: 06/11/2007 12:07:34
Mensagens: 493
Localização: Porto Alegre - RS
Offline

mas pelo o que eu vi (baixei todo o códifo fonte via CVS) ele não faz nada por baixo dos panos com a variável BIgInteger, e eu acho que não tem pra que ele esconder a chave poq é opensource.
Quando eu achar o e-mail desse cara vou perguntar pra ele e posto aqui o segredo da mágica.



Eu sonho com um mundo melhor, onde galinhas que atravessam a rua não serão questionadas pelos seus motivos.
Formate o seu código usando as tags [code] http://www.guj.com.br/posts/list/50115.java
Faça perguntas inteligentes
[MSN]
thingol
Moderador

Membro desde: 29/07/2004 16:10:13
Mensagens: 17543
Offline



O código acima gera um par de chaves, e as imprime.
Exemplo:


O que o código do Glauber chama de "chave privada" provavelmente é o "expoente privado", e o que é chamado de "chave pública" é provavelmente o "módulo".
[WWW]
ivo costa
JavaEvangelist
[Avatar]

Membro desde: 06/11/2007 12:07:34
Mensagens: 493
Localização: Porto Alegre - RS
Offline

Eu também acho que é isso, mas e o new BigInteger("CHAVE")?

ps.: eu ainda não achei o e-mail do Glauber.

ps. 2: ninguém poderia me ajudar nesso tópico http://guj.com.br/posts/list/73898.java

Flw!

Eu sonho com um mundo melhor, onde galinhas que atravessam a rua não serão questionadas pelos seus motivos.
Formate o seu código usando as tags [code] http://www.guj.com.br/posts/list/50115.java
Faça perguntas inteligentes
[MSN]
seymorebutts
Smalltalk

Membro desde: 18/11/2007 03:40:59
Mensagens: 1
Offline

Saudações vi o vosso post e recentemente encotrei o codigo fonte do openp2m e decidir ver como era uma vez que o uso com frequencia.
A mesma duvida surgiu.
Procurei um pouco e encontrei esta classe que supostamente decripta a chave do open mas nao percebo como a posso por a funcionar.
Se quiserem dar uma ajuda agradecia, percebo alguma coisa de java mas nada de algoritmos de encriptação ainda mais este, pelo vi durante a minha pesquisa este meio estranho.
Bem aqui vai a classe para voces verem se podem dar uma ajuda.

/*
* OpenP2M Crypt Break
*
* Encrypt and decrypt password for program OpenP2M.
*
* 06/05/2006 - frighetti AT cascavel.pm.org
*/

import java.lang.String;
import java.math.BigInteger;

class RSA
{
private BigInteger n, d, e;

public RSA()
{
n = new BigInteger("849613389756793222155926708916406526722137707856633" +
"710486677120848018911369507691157686832490341300851" +
"2741498700587851315525414979963642608998181269527941");
d = new BigInteger("169922677951358644431185341783281305344427541571326" +
"742097335424169603782273897848542211926500549462803" +
"9077923965408489035118957525416966246759228390003017");
e = new BigInteger("5");
}

public final String encrypt(String s) {
return "_" + encrypt(new BigInteger(s.getBytes())).toString(36);
}

private BigInteger encrypt(BigInteger message)
{
return message.modPow(e, n);
}

public final String decrypt(String s) throws NumberFormatException
{
return s.startsWith("_") ?
new String(decrypt(new BigInteger(s.substring(1), 36)).toByteArray()) :
new String(decrypt(new BigInteger(s)).toByteArray());
}

private BigInteger decrypt(BigInteger message)
{
return message.modPow(d, n);
}
}

public class openp2m_crypt
{
private String enc = null, dec = null;

public static void main(String[] args)
{
if (args.length <= 1)
usage();

System.out.println(" " + parseargs(args) + "\n");
}

public static void usage()
{
System.out.println("Usage: \n" +
" java openp2m_crypt [-c <string for crypt> | -d <password crypted>]\n" +
" -c : criptography password for openp2m\n" +
" -d : decriptography password for openp2m\n");
System.exit(1);

}

public static String parseargs(String[] args)
{
RSA rsa = new RSA();

for (int i = 0; i < args.length; i++)
{
if (args[i].equals("-c") && i+1<args.length)
{
return rsa.encrypt(args[++i]);
}
else if (args[i].equals("-d") && i+1<args.length)
{
return rsa.decrypt(args[++i]);
}
}

return "";
}
}
[MSN]
Sami Koivu
Virtual Machine Man
[Avatar]

Membro desde: 16/09/2004 09:49:27
Mensagens: 574
Localização: Curitiba-PR
Offline

ivo costa wrote:Eu também acho que é isso, mas e o new BigInteger("CHAVE")?

ps.: eu ainda não achei o e-mail do Glauber.

ps. 2: ninguém poderia me ajudar nesso tópico http://guj.com.br/posts/list/73898.java

Flw!


Acho que essa versão com "CHAVE" é antiga. Acho que eles mudaram a estrutura do CVS e a nova versão está dentro da pasta openp2m/src-core

http://openp2m.cvs.sourceforge.net/openp2m/openp2m/src-core/gui/LoginGUI.java?view=log

Se você tiver um usuário para o site source-forge, você consegue mandar um e-mail pro Glauber via o site mesmo: http://sourceforge.net/sendmessage.php?touser=1617181

[]s,
Sami

This message was edited 2 times. Last update was at 19/11/2007 19:22:26


(Slightly) Random Broken Thoughts on Java Security
[Email] [WWW] [Yahoo!] [MSN]
 
Índice dos Fóruns » Java Avançado
Ir para:   
Powered by JForum 2.1.8 © JForum Team