Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Renault Twingo E-Tech Electric: che prezzo!
Renault Twingo E-Tech Electric: che prezzo!
Renault annuncia la nuova vettura compatta del segmento A, che strizza l'occhio alla tradizione del modello abbinandovi una motorizzazione completamente elettrica e caratteristiche ideali per i tragitti urbani. Renault Twingo E-Tech Electric punta su abitabilità, per una lunghezza di meno di 3,8 metri, abbinata a un prezzo di lancio senza incentivi di 20.000€
Il cuore digitale di F1 a Biggin Hill: l'infrastruttura Lenovo dietro la produzione media
Il cuore digitale di F1 a Biggin Hill: l'infrastruttura Lenovo dietro la produzione media
Nel Formula 1 Technology and Media Centre di Biggin Hill, la velocità delle monoposto si trasforma in dati, immagini e decisioni in tempo reale grazie all’infrastruttura Lenovo che gestisce centinaia di terabyte ogni weekend di gara e collega 820 milioni di spettatori nel mondo
DJI Osmo Mobile 8: lo stabilizzatore per smartphone con tracking multiplo e asta telescopica
DJI Osmo Mobile 8: lo stabilizzatore per smartphone con tracking multiplo e asta telescopica
Il nuovo gimbal mobile DJI evolve il concetto di tracciamento automatico con tre modalità diverse, un modulo multifunzionale con illuminazione integrata e controlli gestuali avanzati. Nel gimbal è anche presente un'asta telescopica da 215 mm con treppiede integrato, per un prodotto completo per content creator di ogni livello
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 09-09-2002, 09:54   #1
loveforSCSI
Senior Member
 
Iscritto dal: Jan 2001
Messaggi: 87
crittografia e timer in java

1) se ho un loop del tipo

while (true)
{

prima parte : fa qualcosa

seconda parte : fa altro


}

cioà suddiviso logicamente in due sottoparti, come posso fare a impostare un timer che le attivi nell'ordine giusto e ciclicamente?
che classi devo importare e che metodi devo usare?



2) ho due programmi che si scambiano messaggi ( stringhe)
devo fare in modo che la trasmissione sia crittata...l'algoritmo non ha molta importanza....ne basta uno semplice...
anche qui come devo fare? che classi importare? che metodi usare?
ciao!!
loveforSCSI è offline   Rispondi citando il messaggio o parte di esso
Old 09-09-2002, 10:35   #2
loveforSCSI
Senior Member
 
Iscritto dal: Jan 2001
Messaggi: 87
vi prego una rispostina ...in particolare sulla crittografia..sono nel panico!!
loveforSCSI è offline   Rispondi citando il messaggio o parte di esso
Old 09-09-2002, 11:15   #3
kingv
Senior Member
 
L'Avatar di kingv
 
Iscritto dal: Jan 2001
Città: Milano
Messaggi: 5707
Quote:
Originariamente inviato da loveforSCSI
[b]vi prego una rispostina ...in particolare sulla crittografia..sono nel panico!!

sulla crittografia ti ho gia' risposto, puoi fare in modo che la comunicazione sui tuoi socket sia crittata con ssl. se usi un jdk inferiore all'1.4 scaricati le estensioni JSSE, se usi l'1.4 sono gia' comprese.
se hai problemi nell uso delle librerie posta pure, non le ho mai usate ma non dovrebbero essere complicate
kingv è offline   Rispondi citando il messaggio o parte di esso
Old 09-09-2002, 11:24   #4
loveforSCSI
Senior Member
 
Iscritto dal: Jan 2001
Messaggi: 87
ciao..spero che le vacanze siano andate bene....
dunque io ho scaricato java criptography extensions..
sono in laboratorio e uso eclipse....la jce contiene jar e non class quindi ho problemi di importazione....
che sto cercando di risolvere..
piuttosto..per il discorso del timer...sai dirmi qualcosa?
ho cercato su due libri di java ma non ho trovato niente...
loveforSCSI è offline   Rispondi citando il messaggio o parte di esso
Old 09-09-2002, 13:44   #5
recoil
Senior Member
 
L'Avatar di recoil
 
Iscritto dal: Jul 2002
Città: Milano
Messaggi: 19148
cerca con google java.util.Timer
io non lo ricordo molto bene, cmq mi sembra che serva per eseguire determinati task ad un certo tempo o a intervalli di tempo.
recoil è offline   Rispondi citando il messaggio o parte di esso
Old 09-09-2002, 14:16   #6
loveforSCSI
Senior Member
 
Iscritto dal: Jan 2001
Messaggi: 87
alora, ho scaricato il java criptography extensions...e dovrebbe esserci un package chiamato javax.crypto ma NON esiste !!!!!!!!!
mi pare di aver capito che lì ci sono le 2 cose in croce che mi servono.....basterebbero un metodo che critta e uno che decritta con una lgoritmo semplice semplice....magari con una sola chiave pure fissa!!
ma non riesco a importare sto javax.crypto !! quindi non posso nemmeno fare esperimenti!
loveforSCSI è offline   Rispondi citando il messaggio o parte di esso
Old 09-09-2002, 15:08   #7
kingv
Senior Member
 
L'Avatar di kingv
 
Iscritto dal: Jan 2001
Città: Milano
Messaggi: 5707
infatti non hai bisogno di jce ma di jsse! :o


http://java.sun.com/products/jsse/index-103.html

il package e' javax.net.ssl

ciao


P.S. per il timer non ho capito di che hai bisogno :o
kingv è offline   Rispondi citando il messaggio o parte di esso
Old 09-09-2002, 15:52   #8
loveforSCSI
Senior Member
 
Iscritto dal: Jan 2001
Messaggi: 87
ciao king...meno male che ci sei tu.......
dunque per il timer...una cosa apparentemente semplice...
si tratterebbe di avere un metodino che aspetta per x millisecondi che qualcuno scriva qualcosa con la tastiera, dopodichè attiva una routine che prende in input i messaggi che gli altri client hanno scritto e poi ritorna nuovamente a controllare se qualcuno ha scritto qualcosa con la tastiera...e così via...
ciao!!!
loveforSCSI è offline   Rispondi citando il messaggio o parte di esso
Old 09-09-2002, 16:09   #9
loveforSCSI
Senior Member
 
Iscritto dal: Jan 2001
Messaggi: 87
ti posto le nuove versioni del client e del server...
mi rimangono due cose da fare: criptare le comunicazioni e gestire meglio il printtoeveryone (ora non c'è più...ho usato un altro sistema)...x quest'ultima cosa ho bisogno del timer...
comunque x criptare avrei bisogno di fare in modo che ogni volta che accedo agli oggetti in e out lo faccio in maniera criptata ) x esempio ssl)
ciao!!

import corejava.*;
import java.io.*;
import java.net.*;
import java.util.*;



class Servizio extends Thread

{
private Socket socket;
private BufferedReader in;
private PrintWriter out;

public Servizio(Socket s) throws IOException
{
socket = s;
in = new BufferedReader(new InputStreamReader(socket.getInputStream()));// flush automatico:
out = new PrintWriter(new BufferedWriter(new OutputStreamWriter(socket.getOutputStream())), true);
start();
}

public void run()
{

try
{
String id = in.readLine();
System.out.println("avviata autenticazione per "+id+".....");
boolean okid = false ;
int puntatore=0;

for ( int x=0 ; x < Server.clients.size() ; x++)

{

String nome = (String)Server.clients.get(x);
if ( nome.equals(id) )

{
puntatore = x;
okid = true;//in Java il confronto di stringhe fatto con == è sbagliato!!!!!
}

}

boolean okpass = false;
String reqpass = "inserire la password:";
out.println(reqpass);
String pass = in.readLine();
String accettato = "autenticato.";
String rifiutato = "non autenticato";

String psw = (String)Server.password.get(puntatore);

if(psw.equals(pass))

{

okpass = true;

}

boolean OK = okid & okpass;
if (OK == true)

{
System.out.println(id + " si e' autenticato.");

//adesso visualizziamo la variabile puntatore
System.out.println("l'indice del client che si è autenticato è :"+puntatore);


//adesso inseriamo nel vettore " autenticati" l'identificativo dell'
//utente che si è appena autenticato

Server.Inserimento(id,puntatore);

//vediamo il vettore autenticati

System.out.println("il vettore autenticati adesso è:");
Server.MostraAutenticati();

out.println (accettato);

while (true)

{
String messaggio = in.readLine();
Server.messaggi.set(puntatore,messaggio); //memorizziamo il messaggio nella posizione giusta
if (messaggio.equals("fine")) break; //esce dal loop
System.out.println(id+":" + messaggio);

for(int counter = 0; counter< Server.messaggi.size(); counter++)

{
String name = (String)Server.autenticati.get(counter);
String mex = (String)Server.messaggi.get(counter);
if ((name != "null") & (mex !="null"))
{
String conferma = name+":"+mex;
out.println(conferma);
}
}
String eot = "eot";
out.println(eot);

}

System.out.println(id+" ci ha lasciato...");
Server.Rimozione(id,puntatore);
System.out.println("il vettore autenticati adesso è:");
Server.MostraAutenticati();


}
else

{

out.println(rifiutato);
System.out.println("autenticazione fallita per " + id + ".");
socket.close();

}
}
catch (IOException e){}
finally

{

try

{
socket.close();
}

catch(IOException e) {}
}
}
}

public class Server

{
static final int porta = 8080;

public static Vector file = new Vector();//recuperiamo dal file ogni riga e la inseriamo in questo vettore
public static Vector clients = new Vector(); //questo vettore ospita i nomi utente dei clients
public static Vector password = new Vector(); //questo vettore ospita le password di ciascun utente
public static Vector autenticati = new Vector();// in questo vettore vengono inseriti ii nomi dei client che via via si autenticano
public static Vector messaggi = new Vector(); //in questo vettore vengono memorizzati i
//messaggi che i clients, via via che si autenticano, scrivono..tali messaggi vengono
//re-diretti verso tutti gli altri clients...per semplicità le dimensioni del vettore
// messaggi sono le stesse del vettore clients

public static void main(String[] args) throws IOException

{
ServerSocket s = new ServerSocket(porta);
String local = System.getProperty("user.dir");
System.out.println ( "la directory locale è:" + local);
int maxclients = Console.readInt("quanti client possono collegarsi contemporaneamente al server ?");
BufferedReader in = new BufferedReader(new FileReader("password.txt"));//il file di password contiene alternati su righe successive nomi utente e password
String riga;
int i = 0;

try
{

do

{
if ((riga = in.readLine()) != null)

{
String k= new String(riga);
file.add(i,k);
//System.out.println ( " ho letto la riga :" + (i+1) + "del file");
//System.out.println ( " la stringa letta è:" + riga);
i++;
}
}
while (riga != null);
in.close();

// for ( int z=0 ; z<vett.size() ; z++)
// {
// String stringa = (String)vett.get(z);
// System.out.println("la riga"+(z+1) +" letta e'"+stringa);
// }

}

catch(IOException e)
{
System.out.println("non posso leggere dal file");
}

System.out. println("il file e':");
for (int m=0 ; m<file.size() ; m++)

{String g = (String)file.get(m);
System.out.println(g);
}



System.out.println(" adesso inizializzo il vettore dei nomi utente e delle password");
int punt1=0;
int punt2=0;
for (int p=0 ; p<file.size() ; p=p+2)

{
String temp1 = (String)file.get(p);
clients.add(punt1,temp1);
punt1 = punt1 +1;
}//ho inizializzato il vettore client

for (int q=1 ; q<file.size() ; q=q+2)

{
String temp2 = (String)file.get(q);
password.add(punt2,temp2);
punt2 = punt2+1;
}//ho inzializzato anche il vettore delle password
//ora abbiamo due vettori che contengono nomi utente e password
//...essendo disponibile il vettore clients, possiamo impostare la dimensione
// del vettore messaggi e del vettore autenticati
//..in questo modo agiremo su di esso tramite il metodo set


messaggi.setSize(clients.size()); //
autenticati.setSize(clients.size()); //
//a questo punto inizializziamo il vettore messaggi con la
//stringa vuota

String empty = "null";

for ( int b = 0 ; b < messaggi.size() ; b++)

{
messaggi.setElementAt(empty,b);
}
//e inzializziamo con la stessa stringa vuota anche il vettore autenticati

for ( int w = 0 ; w < autenticati.size() ; w++)

{
autenticati.setElementAt(empty,w);
}

System.out.println ("i nomi utente sono:");

for ( int z=0 ; z<clients.size(); z++)
{
String a = (String)clients.get(z);
System.out.println(a);
}

System.out.println ("le password sono ( nell'ordine):");

for ( int j=0 ; j<password.size(); j++)
{
String b = (String)password.get(j);
System.out.println(b);
}


System.out.println("Server avviato in attesa della connessione dei clients....");

try {

while(true)
{
Socket socket = s.accept();
try
{
new Servizio(socket);
}
catch(IOException e)
{
socket.close();
}
}
}
finally
{
s.close();
}
}

public static void Inserimento (String nome, int punt)

{
autenticati.set(punt,nome);
}

public static void Rimozione ( String nome, int punt)

{

autenticati.set(punt,"null");

}

public static void MostraAutenticati()
{
for (int contatore = 0 ; contatore < autenticati.size() ; contatore++)
{
String c = (String)autenticati.get(contatore);
if ( c != "null") System.out.println(c);

}
}
}
loveforSCSI è offline   Rispondi citando il messaggio o parte di esso
Old 09-09-2002, 16:21   #10
kingv
Senior Member
 
L'Avatar di kingv
 
Iscritto dal: Jan 2001
Città: Milano
Messaggi: 5707
Quote:
Originariamente inviato da loveforSCSI
[b]ciao king...meno male che ci sei tu.......
dunque per il timer...una cosa apparentemente semplice...
si tratterebbe di avere un metodino che aspetta per x millisecondi che qualcuno scriva qualcosa con la tastiera, dopodichè attiva una routine che prende in input i messaggi che gli altri client hanno scritto e poi ritorna nuovamente a controllare se qualcuno ha scritto qualcosa con la tastiera...e così via...
ciao!!!

sono in ufficio e non posso leggere tutto il codice che hai postato

io farei due thread diversi, uno che gestisce l'input e uno che si occupa di mandare tutti i messaggi ai client. Facendo come dici tu se uno scrive mentre e' attiva la spedizione dei messaggi il programma non "sentirebbe" la pressione dei tasti.

per i socket con ssl scaricati il package che ti ho detto, infilato in classpath e fai qualche prova che non sembra complicato :o

cos'e' sta roba?
import corejava.*;
kingv è offline   Rispondi citando il messaggio o parte di esso
Old 09-09-2002, 16:27   #11
loveforSCSI
Senior Member
 
Iscritto dal: Jan 2001
Messaggi: 87
corejava è un package che contiene una classe Console per fare input da tastiera..ho iniziato con quella e me la sono tenuta

mi spiegheresti in due parole come funziona ssl?....
credo che sia così:

mi invento una chiave tipo
string chiave = " abcdefgddhdhhd"

se voglio crittare una stringa ci sarà il metodo

String stingaCrittata=crittaSSL(stringa in chiaro,chiave)

per decrittare

String stringaInChiaro = decritta(stringaCrittata,chiave)

è così???

nella apidoc di jsse parlano di cose parecchio più incasinate...
loveforSCSI è offline   Rispondi citando il messaggio o parte di esso
Old 09-09-2002, 17:27   #12
kingv
Senior Member
 
L'Avatar di kingv
 
Iscritto dal: Jan 2001
Città: Milano
Messaggi: 5707
sto dando un'occhiata al package (mai usato).

per creare un Socket:

Codice:
SocketFactory sf = SSLSocketFactory.getDefault(); 
Socket s = sf.createSocket("Server", 443);
//443 e' la porta standard ssl

per creare un ServerSocket:

Codice:
ServerSocketFactory ssf = SSLServerSocketFactory.getDefault(); 
ServerSocket ss = ssf.createServerSocket(443);

fatti questi cambiamenti il tuo codice dovrebbe rimanere invariato
kingv è offline   Rispondi citando il messaggio o parte di esso
Old 09-09-2002, 17:36   #13
loveforSCSI
Senior Member
 
Iscritto dal: Jan 2001
Messaggi: 87
grazie....adesso provo...sto usando un ide un po' rompicoglioni (eclipse).....
però la chiave non bisogna specificarla?
ciao!!
loveforSCSI è offline   Rispondi citando il messaggio o parte di esso
Old 09-09-2002, 17:41   #14
kingv
Senior Member
 
L'Avatar di kingv
 
Iscritto dal: Jan 2001
Città: Milano
Messaggi: 5707
Quote:
Originariamente inviato da loveforSCSI
[b]grazie....adesso provo...sto usando un ide un po' rompicoglioni (eclipse).....
però la chiave non bisogna specificarla?
ciao!!
non conosco eclipse, e' open source?

la chiave non occorre specificarla, pero' penso occorra un certificato, ma devo leggere un attimino la documentazione :o :o

cmq prova cosi', se non funziona fatti sentire
kingv è offline   Rispondi citando il messaggio o parte di esso
Old 09-09-2002, 17:51   #15
loveforSCSI
Senior Member
 
Iscritto dal: Jan 2001
Messaggi: 87
si è opensource....è sul server del mio laboratorio...
se vuoi scaricarlo da lì posso lavorarci..
un certificato?
ma cosa è un certificato?
loveforSCSI è offline   Rispondi citando il messaggio o parte di esso
Old 09-09-2002, 19:16   #16
loveforSCSI
Senior Member
 
Iscritto dal: Jan 2001
Messaggi: 87
bo, io sarò pure rincoglionito ( anzi lo sono sicuramente) però nel jsse che ho scaricato dal link che mi hai dato non ci sono package ma 3 file jar (???)...ora io li ho messi nel class path ma se provo un'importazione di javax.net.ssl mi dice che non esiste il package...
forse le classi sono dentro ai jar...e magari i jar vanno trattati in maniera particolare (è così?)...
guarda per il timer non fa niente....così come è ora un client vede cosa hanno scritto gli altri client solo se lui scrive un messaggio ( oppure preme invio e basta)...lo so che non è proprio come in una chat..ma io mi sono rotto il xxxxx con sto lavoro e se lo beccano così com'è...non posso starci per altro tempo sopra....
quindi gli faccio sta benedetta crittografia e basta!
ciao
loveforSCSI è offline   Rispondi citando il messaggio o parte di esso
Old 10-09-2002, 09:46   #17
kingv
Senior Member
 
L'Avatar di kingv
 
Iscritto dal: Jan 2001
Città: Milano
Messaggi: 5707
non conosco eclipse ma nella maggior parte dei tool di sviluppo se metti i jar in classpath le classi contenute vengono viste senza problemi dall'ambiente. In ogni modo non scompattare i jar, cerca nel tuo tool l'opzione per aggiungere nuovi package.
kingv è offline   Rispondi citando il messaggio o parte di esso
Old 10-09-2002, 11:45   #18
loveforSCSI
Senior Member
 
Iscritto dal: Jan 2001
Messaggi: 87
ci sono riuscito alla fine a importare questi jar maledetti!
hai ragione sul certificato...fatte le modifiche se avvio il server mi dà questo errore:

No available certificate corresponds to the SSL cipher suites which are enabled.

ma il certificato è un file oppure è una costante che devo crearmi io?
spulcio la apidoc...se sai già la risposta postala plaese
ciao e grazie
loveforSCSI è offline   Rispondi citando il messaggio o parte di esso
Old 10-09-2002, 12:35   #19
kingv
Senior Member
 
L'Avatar di kingv
 
Iscritto dal: Jan 2001
Città: Milano
Messaggi: 5707
ho dato un occhiata, esiste un tool (keytool) per la generazione "fai da te" di chiavi per l'ssl.

e' spiegato piu'ttosto bene qui:

http://java.sun.com/products/jsse/do...dCustomization


Ciao
kingv è offline   Rispondi citando il messaggio o parte di esso
Old 10-09-2002, 17:22   #20
loveforSCSI
Senior Member
 
Iscritto dal: Jan 2001
Messaggi: 87
ho quasi risolto il problema del timer ( già che ci sono..)
lma ho bisogno di sapere come fare input da tastiera non bloccante ( corejava...............) infatti ora i client possono ricevere i messaggi degli altri solo se viene premuto un tasto...appunto perchè l'input che fa corejava è bloccante...


in alternativa la lettura dei messaggi la potrebbe fare un altro thread...il problema è che non riesco ad agire sullo stream di input da un altro thread perchè non posso dichiararlo public




loveforSCSI è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Renault Twingo E-Tech Electric: che prezzo! Renault Twingo E-Tech Electric: che prezzo!
Il cuore digitale di F1 a Biggin Hill: l'infrastruttura Lenovo dietro la produzione media Il cuore digitale di F1 a Biggin Hill: l'infrast...
DJI Osmo Mobile 8: lo stabilizzatore per smartphone con tracking multiplo e asta telescopica DJI Osmo Mobile 8: lo stabilizzatore per smartph...
Recensione Pura 80 Pro: HUAWEI torna a stupire con foto spettacolari e ricarica superveloce Recensione Pura 80 Pro: HUAWEI torna a stupire c...
Opera Neon: il browser AI agentico di nuova generazione Opera Neon: il browser AI agentico di nuova gene...
Snap e Perplexity unite: dal prossimo an...
La Cina dice addio a NVIDIA? Il governo ...
Microlino, simbolo italiano della mobili...
Apple disattiverà la sincronizzaz...
Google lancia l'allarme: attenzione ai m...
Primo test drive con Leapmotor B10: le c...
'Non può essere un robot': l'uman...
Monopattino elettrico Segway Ninebot Max...
Syberia Remastered è disponibile:...
Sony scopre che tutti i modelli AI hanno...
Amazon nasconde un -15% su 'Seconda Mano...
Due occasioni Apple su Amazon: iPhone 16...
Verso la fine della TV tradizionale? I g...
Cassa JBL a 39€, portatili, smartphone, ...
Cometa interstellare 3I/ATLAS: la sonda ...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 03:02.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Served by www3v