PDA

View Full Version : [JAVA] criptare una stringa


]Rik`[
25-09-2004, 14:59
salve gente, avrei la necessità di criptare una data stringa con DES o con RSA (è indifferente per i fini del progettino) nel lato client e poterla decriptare nel lato server..
..ovviamente la chiave la devo conoscere a priori e non generarla a runtime..ho provato a guardare sulla documentazione della sun ma poco ho capito..qualcuno può darmi una mano? grazie :)

]Rik`[
27-09-2004, 00:36
uppp

kingv
27-09-2004, 09:34
ti posto un esempio molto basilare che puoi completare e milgiorare.


import javax.crytpo.Cipher;
import javax.crytpo.SecretKey;

public class DEScrypt
{
Cipher cipher;

DEScrypt(SecretKey key)
{
try
{
cipher = Cipher.getInstance("DES");
cipher.init(Cipher.ENCRYPT_MODE, key);

}
catch (javax.crypto.NoSuchPaddingException e)
{
}
catch (java.security.NoSuchAlgorithmException e)
{
}
catch (java.security.InvalidKeyException e) {
}
}

public String encrypt(String stringa)
{
try
{
byte[] enc = cipher.doFinal(stringa.getBytes("UTF8");

return new sun.misc.BASE64Encoder().encode(enc);

}
catch (javax.crypto.BadPaddingException e)
{
}
catch (IllegalBlockSizeException e)
{
}
catch (UnsupportedEncodingException e)
{
}
catch (java.io.IOException e) {
}
return null;
}

}

kingv
27-09-2004, 09:37
per utilizzare la classe sopra:


//"chiave" te la devi salvare per potere decrittare,
SecretKey chiave = KeyGenerator.getInstance("DES").generateKey();

DEScrypt enc = new DEScrypt(key);
String encrypted = encr.encrypt("Stringa da crittare");

]Rik`[
27-09-2004, 10:12
grazie mille, vedrò di metterlo in pratica quanto prima!

]Rik`[
27-09-2004, 10:16
ehm..una cosa però

la chiave la dovrei decidere io..visto che in un altro host arriverà la stringa da decrittare..come posso fare?

e altra cosa..come decritto 'sta stringa? :D

kingv
27-09-2004, 10:27
Originariamente inviato da ]Rik`[
ehm..una cosa però

la chiave la dovrei decidere io..visto che in un altro host arriverà la stringa da decrittare..come posso fare?

e altra cosa..come decritto 'sta stringa? :D




per quanto riguarda la chiave DES ha una lunghezza fissa (56 bit).
se vuoi utilizzare un input fornito da te devi creare una funzione che tramuti quello che digiti in una chiave della dimensione corretta per l'algoritmo che utilizzi.


per quanto riguarda la decrittazione lascio a te il codice, ma e' molto semplice (guarda la documentazione della classe Cipher :) )

NA01
27-09-2004, 21:49
non per fare il guastafeste, ma perchè il des? non ha questa grande sicurezza ;)


ciao!

kingv
27-09-2004, 22:53
Originariamente inviato da NA01
non per fare il guastafeste, ma perchè il des? non ha questa grande sicurezza ;)


ciao!



una chiave a 56 bit ha 72 milioni di miliardi di combinazioni.
con hardware dedicato (e costosissimo) penso che ci vogliano comunque diversi giorni per una ricerca esaustiva.

forse non sarà sicuro per i piani militari degli usa, ma non pensare che sia come lasciare i dati in chiaro.

in ogni caso JCE offre ance le implementazioni di altri algoritmi e in rete si trovano implementazioni gratuite di algoritmi piu' recenti

NA01
28-09-2004, 07:01
no, non con il des
un chip deep crack costa ormai relativamente poco (un paio di vecchi milioni ) e aumentando il numero diminuisce linearmente il tempo necessario.




Coming in at 22 hours 15 minutes, the DES Challenge III was solved by the Electronic Frontier Foundation´s `Deep Crack´ in a combined effort with distributed.net.


per il des non serve più l'nsa ;)
io mi butterei sull'aes e se trovi le api magari su mars

ciao

]Rik`[
28-09-2004, 09:05
uso il des per il semplice motivo che mi pare il più facile da implementare, deve essere solo un esempio in un progetto per far vedere al prof che la stringa passa dal client al server criptata :D

kingv
28-09-2004, 09:12
Originariamente inviato da NA01
per il des non serve più l'nsa ;)
io mi butterei sull'aes e se trovi le api magari su mars

ciao


ok mi arrendo.
per l'AES basta JCE che e' integrato in j2se 1.4.2, MARS non so nemmeno cosa sia :stordita:


un provider alternativo a quello di sun e molto valido e' quello che si trova su http://www.bouncycastle.org/, è compatibile con openPGP e offre nuemrose features non disponibile nella reference implementation.

NA01
28-09-2004, 15:02
mars è belllo :D
http://www.research.ibm.com/security/mars.html

era il candidato dell'ibm per l'aes.
velocissimo e tiene chiavi fino a 1204 :eek: altro che le combinazioni da 56bit :D:sofico:
però non avendo passato la selezione non si trova da nessuna parte (forse anche per problemi di licenza)

cia