⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 crypto.cpp

📁 D-ITG2.4源代码
💻 CPP
字号:
 /*	Component of the D-ITG 2.4 Platform
 *
 * 	
 *	copyright	: (C) 2004  	by Stefano Avallone, Alessio Botta, Donato Emma, 
 *					Salvatore Guadagno, Antonio Pescape'
 *					DIS Dipartimento di Informatica e Sistemistica				 
 *					(Computer Science Department)
 *					University of Naples "Federico II"	
 *	email:		: {stavallo, pescape}@unina.it, {abotta, demma, sguadagno}@napoli.consorzio-cini.it
 *
 *	This program is free software; you can redistribute it and/or modify
 *	it under the terms of the GNU General Public License as published by
 *	the Free Software Foundation; either version 2 of the License, or
 *      (at your option) any later version.
 */
 
 


#ifdef CRYPTO
#include <openssl/rsa.h>
#include <openssl/pem.h>

void generate_key()
{
	RSA *RSAreceiver;
	FILE *keyReceiver1;
	FILE *keyReceiver2;
	keyReceiver1 = fopen("KeyReceiverPubblica", "w");
	keyReceiver2 = fopen("KeyReceiverPrivata", "w");
	RSAreceiver = RSA_generate_key(1024, 17, 0, 0);
	
	PEM_write_RSAPublicKey(keyReceiver1, RSAreceiver);
	PEM_write_RSAPrivateKey(keyReceiver2, RSAreceiver, 0, 0, 0, 0, 0);
	fclose(keyReceiver1);
	fclose(keyReceiver2);

	RSA *RSAsender;
	FILE *KeySender1;
	FILE *KeySender2;
	KeySender1 = fopen("KeySenderPubblica", "w");
	KeySender2 = fopen("KeySenderPrivata", "w");
	RSAsender = RSA_generate_key(1024, 17, 0, 0);
	
	PEM_write_RSAPublicKey(KeySender1, RSAsender);
	PEM_write_RSAPrivateKey(KeySender2, RSAsender, 0, 0, 0, 0, 0);
	
	fclose(KeySender1);
	fclose(KeySender2);
}

int autenticazioneSender(int signaling)
{
	char *next;
	int size;
	BYTE type = 10;
	unsigned char Messaggio[256];
	unsigned char MessaggioCodificato[256];
	unsigned char MessaggioCodificato2[256];
	unsigned char MessaggioOriginale[] = "fantozzi alla riscossa";
	unsigned char MessaggioOriginale2[256];
	unsigned char buffer[3000];
	generate_key();
	int plen = sizeof(MessaggioOriginale) - 1;
	RSA *RSAreceiver;
	FILE *keyReceiver;
	keyReceiver = fopen("KeyReceiverPubblica", "r");
	PEM_read_RSAPublicKey(keyReceiver, &RSAreceiver, 0, 0);
	fclose(keyReceiver);

	
	size = RSA_public_encrypt(plen, MessaggioOriginale, MessaggioCodificato, RSAreceiver, RSA_PKCS1_PADDING);	
	cout << "Esito della RSA_pubblic_encrypt :" << size << endl;

	
	next = putValue(&Messaggio, (void *) &type, sizeof(type));
	next = putValue(next, (void *) &MessaggioCodificato, sizeof(MessaggioCodificato));
	size = send(signaling, (char *) &Messaggio, 129, 0);


	size = recv(signaling, (char *) &type, sizeof(type), 0);
	size = recv(signaling, (char *) &MessaggioCodificato2, sizeof(MessaggioCodificato2), 0);
	

	RSA *RSAsender;
	FILE *keysender;
	keysender = fopen("KeySenderPrivata", "r");
	PEM_read_RSAPrivateKey(keysender, &RSAsender, 0, 0);
	fclose(keysender);
	size =
	    RSA_private_decrypt(size, MessaggioCodificato2, MessaggioOriginale2, RSAsender,
	    RSA_PKCS1_PADDING);
	cout << "Esito della RSA_private decrypt :" << size << endl;

	
	
	if (strcmp((const char *) MessaggioOriginale, (const char *) MessaggioOriginale2) == 0)
		return 0;
	else
		return 1;
}

int autenticazioneReceiver(int signaling){
	int size;
        char *next;
	BYTE type=10;
	unsigned char Messaggio[256];
	unsigned char MessaggioCodificato2[256];
	unsigned char MessaggioCodificato[256];
	unsigned char MessaggioDecodificato[256];
	unsigned char MessaggioOriginale[256];
	unsigned char buffer[1000];

	size=recv(signaling,(char*)&MessaggioCodificato,sizeof(MessaggioCodificato),0);
 	
	

	RSA*RSAreceiver;
	FILE *keyreceiver;
	keyreceiver=fopen("KeyReceiverPrivata","r");
	PEM_read_RSAPrivateKey(keyreceiver,&RSAreceiver,0,0);
	fclose(keyreceiver);
	size=RSA_private_decrypt( size, MessaggioCodificato, MessaggioOriginale, RSAreceiver,  RSA_PKCS1_PADDING);
	
	

	RSA*RSAsender;
	FILE *keysender;
	keysender=fopen("KeySenderPubblica","r");
	PEM_read_RSAPublicKey(keysender,&RSAsender,0,0);
	fclose(keysender);
	size=RSA_public_encrypt( size, MessaggioOriginale, MessaggioCodificato2, RSAsender,RSA_PKCS1_PADDING);  		

	

	next=putValue(&Messaggio,(void*)&type,sizeof(type));
  	next=putValue(next,(void*)&MessaggioCodificato2,sizeof(MessaggioCodificato2));
	size=send(signaling,(char*)&Messaggio,129,0);

	
}

#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -