[Progetto] programmazione distribuita C con l'uso di openssl

Linguaggi di programmazione: php, perl, python, C, bash e tutti gli altri.
Scrivi risposta
cha24
Prode Principiante
Messaggi: 7
Iscrizione: lunedì 20 giugno 2011, 17:02

[Progetto] programmazione distribuita C con l'uso di openssl

Messaggio da cha24 »

salve, volevo chiedervi se qualcuno mi sa dire come mai questa semplicissima applicazione non va: ovvero in fase di decifratura non riottengo il msg in chiaro originale. Anche se il testo cifrato è lo stesso, la chiave pure e il contesto è coerente.

client:
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include

#define SA struct sockaddr
#define SRV_PORT 1024
#define SRV_ADDRESS "127.0.0.1"

int main(int argc, char *argv[])
{
int sk, i;
    struct sockaddr_in srv_addr;
char *ciphertext, *plaintext;
char * k = "chia";

    sk = socket(AF_INET, SOCK_STREAM, 0);
    if(sk == -1)
{
        printf("CLIENT: Errore nella creazione del socket.\n");
        exit(1);
    }
   
    memset(&srv_addr, 0, sizeof(srv_addr));
    srv_addr.sin_family = AF_INET;
    srv_addr.sin_port = htons(SRV_PORT);
    if(inet_pton(AF_INET, SRV_ADDRESS, &srv_addr.sin_addr) Connessione stabilita con il server %s sulla porta %d.
#include
#include
#include
#include
#include
#include
#include
#include
#include

#define SA struct sockaddr
#define SRV_PORT 1024
#define BACKLOG_SIZE 5

void handler(int cl_sk)
{
char *msg = "Resisto a tutto fuorche' alle tentazioni";
char *plaintext, *ciphertext;
char * k = "chia";

int nc, /* numero di byte [de]crittati ad ogni passo*/
nctot, /* numero totale di byte crittati */
i, /* indice */
ct_len, /* lunghezza del buffer */
ct_ptr, msg_ptr, /* puntatore alla prima posizione libera del buffer */
msg_len, /* lunghezza del messaggio */
n; /* numero di byte che si cifra di volta in volta*/

/* allocazione del contesto */
EVP_CIPHER_CTX *ctx = (EVP_CIPHER_CTX *)malloc(sizeof(EVP_CIPHER_CTX));
/* inizializzazione del contesto */
EVP_CIPHER_CTX_init(ctx);
/* setup del contesto per la cifratura */
EVP_EncryptInit(ctx, EVP_des_ecb(), NULL, NULL);
EVP_EncryptInit(ctx, NULL, k, NULL);

/* allocazione del buffer per ciphertext */
msg_len = strlen(msg)+1;
ct_len = msg_len + EVP_CIPHER_CTX_block_size(ctx);
ciphertext = (char *)malloc(ct_len);

n = 10;
nc = 0;
nctot = 0;
ct_ptr = 0;
msg_ptr =0;
for (i = 0; i < msg_len / n; i++) {
EVP_EncryptUpdate(ctx, &ciphertext[ct_ptr], &nc, &msg[msg_ptr], n);
ct_ptr += nc;
msg_ptr += n;
nctot += nc;
}
if ( msg_len % n ) {
EVP_EncryptUpdate(ctx, &ciphertext[ct_ptr], &nc, &msg[msg_ptr], msg_len % n);
ct_ptr += nc;
msg_ptr += msg_len % n;
nctot += nc;
}
EVP_EncryptFinal(ctx, &ciphertext[ct_ptr], &nc);
nctot += nc;
//Invio del messaggio M2 al client
if(send(cl_sk, &ct_len, sizeof(ct_len), 0) < sizeof(ct_len))
{

exit(1);
}
if(send(cl_sk, ciphertext, ct_len, 0) < ct_len)
{

exit(1);
}
printf("plaintext:\t%s\n", msg);
printf("ciphertext:\t%s\n", ciphertext);
//Decifratura del ciphertext nel plaintext
EVP_CIPHER_CTX_init(ctx);
nc = 0; ct_ptr = 0;
plaintext = (char *)malloc(ct_len);
bzero(plaintext, ct_len);
EVP_DecryptInit(ctx, EVP_des_ecb(), k, NULL);
EVP_DecryptUpdate(ctx, &plaintext[ct_ptr], &nc, &ciphertext[ct_ptr], ct_len);
EVP_DecryptFinal(ctx, &plaintext[ct_ptr], &nc);
printf("Testo:\t%s\nct_len = %i\nchiave=%s\n", plaintext, ct_len, k);
}

int main(int argc, char *argv[])
{
    int sk, cl_sk, len, pid;
    struct sockaddr_in my_addr, cl_addr;
    char cl_paddr[INET_ADDRSTRLEN];
    uint16_t cl_port;

    sk = socket(AF_INET, SOCK_STREAM, 0);
    if(sk == -1)
{
        printf("SERVER: Impossibile creare un nuovo socket.\n");
        exit(1);
    }
 
    memset(&my_addr, 0, sizeof(my_addr));
    my_addr.sin_family = AF_INET;
    my_addr.sin_addr.s_addr = htonl(INADDR_ANY);
    my_addr.sin_port = htons(SRV_PORT);
   
    if(bind(sk, (SA *) &my_addr, sizeof(my_addr)) == -1)
{
        printf("SERVER: Errore nella bind.\n");
        exit(1);
    }

    if(listen(sk, BACKLOG_SIZE) == -1)
{
        printf("SERVER: Impossibile creare un coda di backlog lunga %d\n", BACKLOG_SIZE);
        exit(1);
    }

for(;;)       
{
        //Ciclo con cui il server accetta le richieste dei client
        len = sizeof(cl_addr);
        cl_sk = accept(sk, (SA *) &cl_addr, &len);
        if(cl_sk == -1)
{
            printf("SERVER: Errore nll'accept\n");
            exit(1);
        }
//per ogni nuova richiesta il server crea un nuovo processo per servirla
pid = fork();
if(pid == -1)
{
            printf("SERVER: Errore nella creazione di un nuovo processo\n");
close(cl_sk);
close(sk);
            exit(1);

}
else if(pid != 0) //Codice processo padre
{
close(cl_sk);
continue;
}
else //Codice processo figlio
{
    inet_ntop(AF_INET, &cl_addr.sin_addr, cl_paddr, sizeof(cl_paddr));
    cl_port = ntohs(cl_addr.sin_port);
    printf("SERVER: Connessione stabilita con il client %s sulla porta %u\n", cl_paddr, cl_port);
close(sk);
//Chiamata al gestore di richieste
handler(cl_sk);
exit(0);
}
    }

    close(sk);
    exit(0);
}

grazie per l'eventuale aiuto...
Avatar utente
difesaparcosempione
Rampante Reduce
Rampante Reduce
Messaggi: 6031
Iscrizione: giovedì 27 luglio 2006, 19:06
Località: Torino
Contatti:

Re: [Progetto] programmazione distribuita C con l'uso di openssl

Messaggio da difesaparcosempione »

per favore potresti postare il codice C con gli opportuni tag ?
Cosi semplichi la vita a chi potrebbe aiutarti !
ciao
(z)
cha24
Prode Principiante
Messaggi: 7
Iscrizione: lunedì 20 giugno 2011, 17:02

Re: [Progetto] programmazione distribuita C con l'uso di openssl

Messaggio da cha24 »

Scusate, ma non sono per niente pratica di forum...spero che così vada meglio

CLIENT:

Codice: Seleziona tutto

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <openssl/evp.h>
#include <openssl/rand.h>

#define SA struct sockaddr
#define SRV_PORT 1024
#define SRV_ADDRESS "127.0.0.1"

int main(int argc, char *argv[])
{
	int sk, i;
    struct sockaddr_in srv_addr;
	char *ciphertext, *plaintext;
	char * k = "chia";

    sk = socket(AF_INET, SOCK_STREAM, 0);
    if(sk == -1)
	{
        printf("CLIENT: Errore nella creazione del socket.\n");
        exit(1);
    }
    
    memset(&srv_addr, 0, sizeof(srv_addr)); 
    srv_addr.sin_family = AF_INET; 
    srv_addr.sin_port = htons(SRV_PORT);
    if(inet_pton(AF_INET, SRV_ADDRESS, &srv_addr.sin_addr) <=0)
	{
        printf("CLIENT: Indirizzo del server errato\n");
        exit(1);
    }

    //Stabilimento della connessione
	if(connect(sk, (SA *) &srv_addr, sizeof(srv_addr)) == -1)
	{
	    printf("CLIENT: Impossibile connettersi al server\n");
	    exit(1);
	}
	printf("\n---->Connessione stabilita con il server %s sulla porta %d.<----\n", SRV_ADDRESS, SRV_PORT);

	int ct_len;	
	//Ricezione di M2 dal server
    if(recv(sk, &ct_len, sizeof(ct_len), MSG_WAITALL) != sizeof(ct_len))
	{
        printf("CLIENT: Errore nella ricezione della lunghezza del messaggio M2 dal server\n");
	    exit(1);
    }

	ciphertext = (char *)malloc(ct_len);
	bzero(ciphertext, ct_len);
    if(recv(sk, ciphertext, ct_len, MSG_WAITALL) != ct_len)
	{
        printf("CLIENT: Errore nella ricezione del messaggio M2 dal server\n");
	    exit(1);
    }
	printf("ciphertext:\t%s\n", ciphertext);
	/* allocazione del contesto */
	EVP_CIPHER_CTX *ctx = (EVP_CIPHER_CTX *)malloc(sizeof(EVP_CIPHER_CTX));
	/* inizializzazione del contesto */
	EVP_CIPHER_CTX_init(ctx);
	/* setup del contesto per la cifratura */
	EVP_DecryptInit(ctx, EVP_des_ecb(), NULL, NULL);

	/* Allocazione buffer */
	plaintext = (char *)malloc(ct_len);
	bzero(plaintext, ct_len);
	/* Inizializzazione contesto decifratura */
	EVP_DecryptInit(ctx, EVP_des_ecb(), k, NULL);
	/*decifratura */
	int nc = 0;
	int ct_ptr = 0;
	EVP_DecryptUpdate(ctx, &plaintext[ct_ptr], &nc, &ciphertext[ct_ptr], ct_len);
	EVP_DecryptFinal(ctx, &plaintext[ct_ptr], &nc);

	printf("Testo:\t%s\nct_len = %i\nchiave=%s\n", plaintext, ct_len, k);
	exit(0);
}

SERVER:

Codice: Seleziona tutto

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <openssl/evp.h>
#include <openssl/rand.h>

#define SA struct sockaddr
#define SRV_PORT 1024
#define BACKLOG_SIZE 5

void handler(int cl_sk)
{
	char *msg = "Resisto a tutto fuorche' alle tentazioni";
	char *plaintext, *ciphertext;
	char * k = "chia";

	int nc, /* numero di byte [de]crittati ad ogni passo*/
	nctot, /* numero totale di byte crittati */
	i, /* indice */
	ct_len, /* lunghezza del buffer */
	ct_ptr, msg_ptr, /* puntatore alla prima posizione libera del buffer */
	msg_len, /* lunghezza del messaggio */
	n; /* numero di byte che si cifra di volta in volta*/

	/* allocazione del contesto */
	EVP_CIPHER_CTX *ctx = (EVP_CIPHER_CTX *)malloc(sizeof(EVP_CIPHER_CTX));
	/* inizializzazione del contesto */
	EVP_CIPHER_CTX_init(ctx);
	/* setup del contesto per la cifratura */
	EVP_EncryptInit(ctx, EVP_des_ecb(), NULL, NULL);
	EVP_EncryptInit(ctx, NULL, k, NULL);

	/* allocazione del buffer per ciphertext */
	msg_len = strlen(msg)+1;
	ct_len = msg_len + EVP_CIPHER_CTX_block_size(ctx);
	ciphertext = (char *)malloc(ct_len);

	n = 10;
	nc = 0;
	nctot = 0;
	ct_ptr = 0;
	msg_ptr =0;
	for (i = 0; i < msg_len / n; i++) {
		EVP_EncryptUpdate(ctx, &ciphertext[ct_ptr], &nc, &msg[msg_ptr], n);
		ct_ptr += nc;
		msg_ptr += n;
		nctot += nc;
	}
	if ( msg_len % n ) {
		EVP_EncryptUpdate(ctx, &ciphertext[ct_ptr], &nc, &msg[msg_ptr], msg_len % n);
		ct_ptr += nc;
		msg_ptr += msg_len % n;
		nctot += nc;
	}
	EVP_EncryptFinal(ctx, &ciphertext[ct_ptr], &nc);
	nctot += nc;
	//Invio del messaggio M2 al client 
	if(send(cl_sk, &ct_len, sizeof(ct_len), 0) < sizeof(ct_len))
	{

		exit(1);
	}
	if(send(cl_sk, ciphertext, ct_len, 0) < ct_len)
	{

		exit(1);
	}
	printf("plaintext:\t%s\n", msg);
	printf("ciphertext:\t%s\n", ciphertext);
	//Decifratura del ciphertext nel plaintext
	EVP_CIPHER_CTX_init(ctx);
	nc = 0; ct_ptr = 0;
	plaintext = (char *)malloc(ct_len);
	bzero(plaintext, ct_len);
	EVP_DecryptInit(ctx, EVP_des_ecb(), k, NULL);
	EVP_DecryptUpdate(ctx, &plaintext[ct_ptr], &nc, &ciphertext[ct_ptr], ct_len);
	EVP_DecryptFinal(ctx, &plaintext[ct_ptr], &nc);
	printf("Testo:\t%s\nct_len = %i\nchiave=%s\n", plaintext, ct_len, k);
}

int main(int argc, char *argv[])
{
    int sk, cl_sk, len, pid;
    struct sockaddr_in my_addr, cl_addr;
    char cl_paddr[INET_ADDRSTRLEN];
    uint16_t cl_port;

    sk = socket(AF_INET, SOCK_STREAM, 0);
    if(sk == -1)
	{
        printf("SERVER: Impossibile creare un nuovo socket.\n");
        exit(1);
    }
   
    memset(&my_addr, 0, sizeof(my_addr));
    my_addr.sin_family = AF_INET; 
    my_addr.sin_addr.s_addr = htonl(INADDR_ANY); 
    my_addr.sin_port = htons(SRV_PORT); 
    
    if(bind(sk, (SA *) &my_addr, sizeof(my_addr)) == -1)
	{
        printf("SERVER: Errore nella bind.\n");
        exit(1);
    }
 
    if(listen(sk, BACKLOG_SIZE) == -1)
	{
        printf("SERVER: Impossibile creare un coda di backlog lunga %d\n", BACKLOG_SIZE);
        exit(1);
    }

	for(;;)        
	{
        //Ciclo con cui il server accetta le richieste dei client
        len = sizeof(cl_addr);
        cl_sk = accept(sk, (SA *) &cl_addr, &len);
        if(cl_sk == -1)
		{
            printf("SERVER: Errore nll'accept\n");
            exit(1);
        }
		//per ogni nuova richiesta il server crea un nuovo processo per servirla
		pid = fork();
		if(pid == -1)
		{
            printf("SERVER: Errore nella creazione di un nuovo processo\n");
			close(cl_sk);
			close(sk);
            exit(1);

		}
		else if(pid != 0) //Codice processo padre
		{
			close(cl_sk);
			continue;
		}
		else	//Codice processo figlio
		{
		    inet_ntop(AF_INET, &cl_addr.sin_addr, cl_paddr, sizeof(cl_paddr));
		    cl_port = ntohs(cl_addr.sin_port);
		    printf("SERVER: Connessione stabilita con il client %s sulla porta %u\n", cl_paddr, cl_port);
			close(sk);
			//Chiamata al gestore di richieste
			handler(cl_sk);
			exit(0);
		}
    }
	
    close(sk);
    exit(0);
}
Avatar utente
difesaparcosempione
Rampante Reduce
Rampante Reduce
Messaggi: 6031
Iscrizione: giovedì 27 luglio 2006, 19:06
Località: Torino
Contatti:

Re: [Progetto] programmazione distribuita C con l'uso di openssl

Messaggio da difesaparcosempione »

per la compilazione , che librerie serve aver installato. Visto che ci siamo mi diresti come compili i 2 prg ..
ciao
:)
cha24
Prode Principiante
Messaggi: 7
Iscrizione: lunedì 20 giugno 2011, 17:02

Re: [Progetto] programmazione distribuita C con l'uso di openssl

Messaggio da cha24 »

certo...
devi aver installato openssl..
per quanto riguarda la compilazione:
[supponendo come nome del file server.c] digiti

Codice: Seleziona tutto

cc -lssl server.c -o s
dopo di che fai partire l'eseguibile con

Codice: Seleziona tutto

./s
stessa cosa per il client, cambiando ovviamente i nomi XD
Avatar utente
difesaparcosempione
Rampante Reduce
Rampante Reduce
Messaggi: 6031
Iscrizione: giovedì 27 luglio 2006, 19:06
Località: Torino
Contatti:

Re: [Progetto] programmazione distribuita C con l'uso di openssl

Messaggio da difesaparcosempione »

Quindi basta avere ssl e non diavolerie tipo ssl-dev ...
appena posso provo a generare i 2 prg.
ciao
:)
cha24
Prode Principiante
Messaggi: 7
Iscrizione: lunedì 20 giugno 2011, 17:02

Re: [Progetto] programmazione distribuita C con l'uso di openssl

Messaggio da cha24 »

eh si, scarichi il sorgente e compili...ci vuole poco!! grazie, sono in paranoia che devo completare un progetto per venerdi mattina -.-
Avatar utente
difesaparcosempione
Rampante Reduce
Rampante Reduce
Messaggi: 6031
Iscrizione: giovedì 27 luglio 2006, 19:06
Località: Torino
Contatti:

Re: [Progetto] programmazione distribuita C con l'uso di openssl

Messaggio da difesaparcosempione »

colpix e affondato ...
e probabilmente come pensavo ( male ) io.
Per generare i programmi mi serve il kit di developping di ssl
Output cc
user@ubux[79 .25]:~/todelete/prg-openssliib$ cc -lssl srv.c -o srv
srv.c:9:25: error: openssl/evp.h: No such file or directory
srv.c:10:26: error: openssl/rand.h: No such file or directory
srv.c: In function ‘handler’:
srv.c:31: error: ‘EVP_CIPHER_CTX’ undeclared (first use in this function)
srv.c:31: error: (Each undeclared identifier is reported only once
srv.c:31: error: for each function it appears in.)
srv.c:31: error: ‘ctx’ undeclared (first use in this function)
srv.c:31: error: expected expression before ‘)’ token
user@ubux[79 .25]:~/todelete/prg-openssliib$ cc -lssl cli.c -o cli
cli.c:9:25: error: openssl/evp.h: No such file or directory
cli.c:10:26: error: openssl/rand.h: No such file or directory
cli.c: In function ‘main’:
cli.c:64: error: ‘EVP_CIPHER_CTX’ undeclared (first use in this function)
cli.c:64: error: (Each undeclared identifier is reported only once
cli.c:64: error: for each function it appears in.)
cli.c:64: error: ‘ctx’ undeclared (first use in this function)
cli.c:64: error: expected expression before ‘)’ token
user@ubux[79 .25]:~/todelete/prg-openssliib$ dpkg --list | grep ssl
ii  libflac8                                  1.2.1-1ubuntu2                Free Lossless Audio Codec - runtime C librar
ii  libssl0.9.8                                0.9.8g-4ubuntu3.1            SSL shared libraries
ii  libwavpack1                                4.41.0-1                      an audio codec (lossy and lossless) - librar
ii  openssl                                    0.9.8g-4ubuntu3              Secure Socket Layer (SSL) binary and related
ii  ssl-cert                                  1.0.14-0ubuntu2              Simple debconf wrapper for openssl
ho messo anche l'output di dpkg per dimostrarti che openssl è da me installato.
Quindi la cosa si complica ( anche perchè dovrei installare ed ho una 8.04 )
vediamo cosa si potrà fare.

ciao
:D
Avatar utente
difesaparcosempione
Rampante Reduce
Rampante Reduce
Messaggi: 6031
Iscrizione: giovedì 27 luglio 2006, 19:06
Località: Torino
Contatti:

Re: [Progetto] programmazione distribuita C con l'uso di openssl

Messaggio da difesaparcosempione »

potresti postare l'output di questo comando dato sul tuo sistema di sviluppo:


dpkg --list | grep ssl

dovresti avere "ii" un lib-ssl.dev ?
ciao
;)
cha24
Prode Principiante
Messaggi: 7
Iscrizione: lunedì 20 giugno 2011, 17:02

Re: [Progetto] programmazione distribuita C con l'uso di openssl

Messaggio da cha24 »

Codice: Seleziona tutto

ii  erlang-ssl                           1:13.b.3-dfsg-2ubuntu3                            Erlang/OTP implementation of SSL
ii  libflac8                             1.2.1-3                                           Free Lossless Audio Codec - runtime C library
ii  libssl-dev                           0.9.8o-1ubuntu4.4                                 SSL development libraries, header files and documentation
ii  libssl0.9.8                          0.9.8o-1ubuntu4.4                                 SSL shared libraries
ii  libwavpack1                          4.60.1-1                                          an audio codec (lossy and lossless) - library
ii  openssl                              0.9.8o-1ubuntu4.4                                 Secure Socket Layer (SSL) binary and related cryptographic tools
ii  python-openssl                       0.10-1                                            Python wrapper around the OpenSSL library
ii  ssl-cert                             1.0.26                                            simple debconf wrapper for OpenSSL
io ricordo di avere installato solo la libreria!
Avatar utente
difesaparcosempione
Rampante Reduce
Rampante Reduce
Messaggi: 6031
Iscrizione: giovedì 27 luglio 2006, 19:06
Località: Torino
Contatti:

Re: [Progetto] programmazione distribuita C con l'uso di openssl

Messaggio da difesaparcosempione »

Adesso ho un problema per cui non riesco ad installare la libreria di sviluppo.
Appena risolvo proverò a generare i 2 prg. Posso utilizzare la stessa macchina per i tests?
ciao
:)
cha24
Prode Principiante
Messaggi: 7
Iscrizione: lunedì 20 giugno 2011, 17:02

Re: [Progetto] programmazione distribuita C con l'uso di openssl

Messaggio da cha24 »

certo...basta che usi due "terminali" diversi

:)
Avatar utente
difesaparcosempione
Rampante Reduce
Rampante Reduce
Messaggi: 6031
Iscrizione: giovedì 27 luglio 2006, 19:06
Località: Torino
Contatti:

Re: [Progetto] programmazione distribuita C con l'uso di openssl

Messaggio da difesaparcosempione »

Allora i client comunicano correttamente con il server, la parte di comunicazione regge?
Sembra il discorso di criptaggio e decriptaggio che non funziona ?
Ti faccio queste domande perchè non posso ancora compilare i tuoi "semplici" programmi.

Ho visto che hai usato delle printf per provare la bontà del programma, potresti dirmi il senso di quest'ultime e dove c'è stato un errore ....

Tieni conto che non avendo il -dev non ho i prototipi delle funzioni EVP() e quindi per adesso do scontato che siano state usate ok

ciao
Avatar utente
difesaparcosempione
Rampante Reduce
Rampante Reduce
Messaggi: 6031
Iscrizione: giovedì 27 luglio 2006, 19:06
Località: Torino
Contatti:

Re: [Progetto] programmazione distribuita C con l'uso di openssl

Messaggio da difesaparcosempione »

The functions EVP_EncryptInit(), EVP_EncryptFinal(), EVP_DecryptInit(), EVP_CipherInit() and EVP_CipherFinal() are obsolete but are retained for compatibility with existing code. New code should use EVP_EncryptInit_ex(), EVP_EncryptFinal_ex(), EVP_DecryptInit_ex(), EVP_DecryptFinal_ex(), EVP_CipherInit_ex() and EVP_CipherFinal_ex() because they can reuse an existing context without allocating and freeing it up on each call.
intanto è corretto attivare due init cosi ( lato server )

       /* setup del contesto per la cifratura */
      EVP_EncryptInit(ctx, EVP_des_ecb(), NULL, NULL);
       EVP_EncryptInit(ctx, NULL, k, NULL);


mentre su client

       /* setup del contesto per la cifratura */
       EVP_DecryptInit(ctx, EVP_des_ecb(), NULL, NULL);

       /* Allocazione buffer */
       plaintext = (char *)malloc(ct_len);
       bzero(plaintext, ct_len);
       /* Inizializzazione contesto decifratura */
       EVP_DecryptInit(ctx, EVP_des_ecb(), k, NULL);
Ultima modifica di difesaparcosempione il martedì 21 giugno 2011, 19:58, modificato 1 volta in totale.
Avatar utente
difesaparcosempione
Rampante Reduce
Rampante Reduce
Messaggi: 6031
Iscrizione: giovedì 27 luglio 2006, 19:06
Località: Torino
Contatti:

Re: [Progetto] programmazione distribuita C con l'uso di openssl

Messaggio da difesaparcosempione »

abituati a testare i return code delle funzioni ...
ciao
cha24
Prode Principiante
Messaggi: 7
Iscrizione: lunedì 20 giugno 2011, 17:02

Re: [Progetto] programmazione distribuita C con l'uso di openssl

Messaggio da cha24 »

ho rifatto tutto ex novo e ho risolto....Di certo c'era qualcosa di settato male...scusami se ti ho fatto perdere tempo! ciao!!!
Avatar utente
difesaparcosempione
Rampante Reduce
Rampante Reduce
Messaggi: 6031
Iscrizione: giovedì 27 luglio 2006, 19:06
Località: Torino
Contatti:

Re: [Progetto] programmazione distribuita C con l'uso di openssl

Messaggio da difesaparcosempione »

figurati ..
ciao


potresti postare i 2 nuovi prg, sarei interessato a darci un'occhiata.
Scrivi risposta

Ritorna a “Programmazione”

Chi c’è in linea

Visualizzano questa sezione: 0 utenti iscritti e 2 ospiti