Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Insta360 Luna Ultra: la potenza del sensore da 1 pollice incontra la portabilità estrema
Insta360 Luna Ultra: la potenza del sensore da 1 pollice incontra la portabilità estrema
Insta360 Luna Ultra integra un sensore da 1 pollice 8K, ottiche Leica e triplo chip IA. Tra schermo OLED rimovibile, workflow I-Log a 10 bit e stabilizzazione a tre assi, analizziamo le doti tecniche di una gimbal camera pensata per i professionisti
Marvel's Wolverine, la recensione: Logan torna protagonista in un'avventura brutale e intensa
Marvel's Wolverine, la recensione: Logan torna protagonista in un'avventura brutale e intensa
Marvel's Wolverine porta Logan in un'avventura inedita, violenta e fortemente narrativa, costruita attorno alla sua natura di combattente e al difficile rapporto con il proprio passato. Insomniac Games punta su combattimenti spettacolari, progressione e personalizzazione, inserendo l'azione in un mondo segnato dalla persecuzione dei mutanti. Un viaggio intenso, che alterna mattanza, esplorazione e momenti sorprendentemente emotivi.
DJI Romo 2: tante novità lo rendono un robot completo
DJI Romo 2: tante novità lo rendono un robot completo
Romo 2 è la seconda generazione di robot lavapavimenti di DJI, un modello che si caratterizza per la precisione nel sistema di navigazione e per il funzionamento particolarmente silenzioso. Con le modifiche introdotte in questa seconda versione, e un posizionamento di prezzo più allineato alla concorrenza, rappresenta una valida alternativa sul mercato delle soluzioni di pulizia domestica
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 09-09-2002, 08: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, 09: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, 10: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, 10: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, 12:44   #5
recoil
Senior Member
 
L'Avatar di recoil
 
Iscritto dal: Jul 2002
Città: Milano
Messaggi: 19150
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, 13: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, 14: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, 14: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, 15: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, 15: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, 15: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, 16: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, 16: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, 16: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, 16: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, 18: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, 08: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, 10: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, 11: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, 16: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


Insta360 Luna Ultra: la potenza del sensore da 1 pollice incontra la portabilità estrema Insta360 Luna Ultra: la potenza del sensore da 1...
Marvel's Wolverine, la recensione: Logan torna protagonista in un'avventura brutale e intensa Marvel's Wolverine, la recensione: Logan torna p...
DJI Romo 2: tante novità lo rendono un robot completo DJI Romo 2: tante novità lo rendono un ro...
Sony Bravia 9 II: il True RGB alla prova, dove l'LCD sfida l'OLED Sony Bravia 9 II: il True RGB alla prova, dove l...
Geely EX5, un mese al volante: il SUV elettrico cinese che ci ha sorpreso (quasi) senza riserve Geely EX5, un mese al volante: il SUV elettrico ...
AMD: l'alternativa al DLSS 5 sarebbe in ...
Canon EOS R8 Mark II: sensore da 24,2 MP...
Alla Napoli Shipping Week 2026 arriva il...
Addio bollo: il Governo cancella la tass...
Speciale Logitech G: mouse PRO X SUPERLI...
Cosa pensano Altman, Amodei, Benioff e H...
Microsoft: evento il 7 ottobre dedicato ...
Scoperti 84 corpi cosmici anomali: cosa ...
Dimensity 9600 Pro contro A20 Pro, il nu...
HillMiles MileCity1 torna a 648,99€: e-b...
Enel Mobile, il debutto è sempre ...
Nuova rimodulazione per il fisso di TIM ...
iPhone 18 Pro e Pro Max, preordini sotto...
Ha craccato 26 giochi: ora Denuvo vuole ...
Xiaomi 18 Pro, il lancio è uffici...
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:37.


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