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

📄 main.bak

📁 加密算法。
💻 BAK
字号:
#include <stdio.h>
#include <windows.h>
#include <mmsystem.h>

#include "rsa_incl.h"

int SaveKeys(char* filename,R_RSA_PUBLIC_KEY publicKey,R_RSA_PRIVATE_KEY privateKey);
int LodeKeys(char* filename,R_RSA_PUBLIC_KEY * publicKey,R_RSA_PRIVATE_KEY * privateKey);

int FilePublicDecrypt(char* inputfile,char* outputfile,R_RSA_PUBLIC_KEY * publicKey);
int FilePublicEncrypt(char* inputfile,char* outputfile,R_RSA_PUBLIC_KEY * publicKey);
int FilePrivateDecrypt(char* inputfile,char* outputfile,R_RSA_PRIVATE_KEY * privateKey);
int FilePrivateEncrypt(char* inputfile,char* outputfile,R_RSA_PRIVATE_KEY * privateKey);

int main()
{
	int status;
	R_RSA_PUBLIC_KEY publicKey;    /* new RSA public key */
	R_RSA_PRIVATE_KEY privateKey;  /* new RSA private key */
	R_RSA_PROTO_KEY protoKey;      /* RSA prototype key */
	R_RANDOM_STRUCT randomStruct;  /* random structure */

	R_RSA_PUBLIC_KEY publicKey1;    /* new RSA public key */
	R_RSA_PRIVATE_KEY privateKey1;  /* new RSA private key */

	unsigned char output[128];
	unsigned int outputLen;        /* length of output block */
	unsigned char input[130];           /* input block */
	unsigned int inputLen=117;          /* length of input block */

	DWORD start,end;
	char filename[100];

	R_RandomCreate(&randomStruct);

	protoKey.bits=1024;
	protoKey.useFermat4=1;

	strcpy(filename,"PEMKeys");
//	status=R_GeneratePEMKeys(&publicKey, &privateKey, &protoKey, &randomStruct);
//	SaveKeys(filename,publicKey,privateKey);
	LodeKeys(filename,&publicKey1,&privateKey1);
//////////////////////////////////////////////////////////////////////////////
	R_memcpy(input,"ScanDisk checked drive C for problems, with the following results: Directory structure Scan Disk did not perform any.\0",inputLen+1);
	inputLen=117;          
	printf("%s\n",input);

	start = timeGetTime();
	status=RSAPublicEncrypt(output, &outputLen, input, inputLen, &publicKey1);
	end = timeGetTime();
	output[outputLen]=0;
	printf("%s--%d\n",output,outputLen);
	printf("PublicEncrypt time:%u\n" , end-start );

	R_memcpy(input,output,outputLen);
	inputLen=outputLen;


	start = timeGetTime();
	status=RSAPrivateDecrypt(output, &outputLen, input, inputLen, &privateKey1);
	end = timeGetTime();
	output[outputLen]=0;
	printf("%s--%d\n",output,outputLen);
	printf("PrivateDecrypt time:%u\n" , end-start );

	R_memcpy(input,output,outputLen);
	inputLen=outputLen;

	start = timeGetTime();
	status=RSAPrivateEncrypt(output, &outputLen, input, inputLen, &privateKey1);
	end = timeGetTime();
	output[outputLen]=0;
	printf("%s--%d\n",output,outputLen);
	printf("PrivateEncrypt time:%u\n" , end-start );

	R_memcpy(input,output,outputLen);
	inputLen=outputLen;

	start = timeGetTime();
	status=RSAPublicDecrypt(output, &outputLen, input, inputLen, &publicKey1);
	end = timeGetTime();
	output[outputLen]=0;
	printf("%s--%d\n",output,outputLen);
	printf("PublicDecrypt time:%u\n" , end-start );

///////////////////////////////////////////////////////////////////
/*
	R_memcpy(input,"ScanDisk checked drive C for problems, with the following results: Directory structure Scan Disk did not perform any.\0",inputLen+1);
	inputLen=117;          
	printf("%s\n",input);

	start = timeGetTime();
	status=RSAPublicEncrypt(output, &outputLen, input, inputLen, &publicKey,&randomStruct);
	end = timeGetTime();
	output[outputLen]=0;
	printf("%s--%d\n",output,outputLen);
	printf("PublicEncrypt time:%u\n" , end-start );

	R_memcpy(input,output,outputLen);
	inputLen=outputLen;


	start = timeGetTime();
	status=RSAPrivateDecrypt(output, &outputLen, input, inputLen, &privateKey);
	end = timeGetTime();
	output[outputLen]=0;
	printf("%s--%d\n",output,outputLen);
	printf("PrivateDecrypt time:%u\n" , end-start );

	R_memcpy(input,output,outputLen);
	inputLen=outputLen;

	start = timeGetTime();
	status=RSAPrivateEncrypt(output, &outputLen, input, inputLen, &privateKey);
	end = timeGetTime();
	output[outputLen]=0;
	printf("%s--%d\n",output,outputLen);
	printf("PrivateEncrypt time:%u\n" , end-start );

	R_memcpy(input,output,outputLen);
	inputLen=outputLen;

	start = timeGetTime();
	status=RSAPublicDecrypt(output, &outputLen, input, inputLen, &publicKey);
	end = timeGetTime();
	output[outputLen]=0;
	printf("%s--%d\n",output,outputLen);
	printf("PublicDecrypt time:%u\n" , end-start );


*/

/*
	R_RandomCreate(&randomStruct);

	protoKey.bits=1024;
	protoKey.useFermat4=1;

	start = timeGetTime();
	status=R_GeneratePEMKeys(&publicKey, &privateKey, &protoKey, &randomStruct);
	end = timeGetTime();
	printf("Generate Keys time:%u\n" , end-start );

	R_memcpy(input,"ScanDisk checked drive C for problems, with the following results: Directory structure Scan Disk did not perform any.\0",inputLen+1);
	printf("%s\n",input);

	start = timeGetTime();
	status=RSAPublicEncrypt(output, &outputLen, input, inputLen, &publicKey,&randomStruct);
	end = timeGetTime();
	output[outputLen]=0;
	printf("%s--%d\n",output,outputLen);
	printf("PublicEncrypt time:%u\n" , end-start );

	R_memcpy(input,output,outputLen);
	inputLen=outputLen;


	start = timeGetTime();
	status=RSAPrivateDecrypt(output, &outputLen, input, inputLen, &privateKey);
	end = timeGetTime();
	output[outputLen]=0;
	printf("%s--%d\n",output,outputLen);
	printf("PrivateDecrypt time:%u\n" , end-start );

	R_memcpy(input,output,outputLen);
	inputLen=outputLen;

	start = timeGetTime();
	status=RSAPrivateEncrypt(output, &outputLen, input, inputLen, &privateKey);
	end = timeGetTime();
	output[outputLen]=0;
	printf("%s--%d\n",output,outputLen);
	printf("PrivateEncrypt time:%u\n" , end-start );

	R_memcpy(input,output,outputLen);
	inputLen=outputLen;

	start = timeGetTime();
	status=RSAPublicDecrypt(output, &outputLen, input, inputLen, &publicKey);
	end = timeGetTime();
	output[outputLen]=0;
	printf("%s--%d\n",output,outputLen);
	printf("PublicDecrypt time:%u\n" , end-start );
*/
return 0;
}

int SaveKeys(char* filename,R_RSA_PUBLIC_KEY publicKey,R_RSA_PRIVATE_KEY privateKey)
{
	FILE* KeyFile;

	KeyFile=fopen(filename,"wb");
	if( KeyFile== NULL )
		return 0;
	
	fwrite(&publicKey,sizeof(R_RSA_PUBLIC_KEY),1,KeyFile);
	fwrite(&privateKey,sizeof(R_RSA_PRIVATE_KEY),1,KeyFile);

	fclose(KeyFile);
	return 1;

/*
	FILE* KeyFile;
	int i;

	KeyFile=fopen(filename,"wt");
	if( KeyFile== NULL )
		return 0;
   
//		typedef struct {
//		  unsigned short int bits;                     
//		  unsigned char modulus[MAX_RSA_MODULUS_LEN];  
//		  unsigned char exponent[MAX_RSA_MODULUS_LEN]; 
//		} R_RSA_PUBLIC_KEY;
	fprintf(KeyFile,"%d\n",publicKey.bits);
	for(i=0;i<MAX_RSA_MODULUS_LEN;i++)
		fprintf(KeyFile,"%d\n",publicKey.modulus[i]);
	for(i=0;i<MAX_RSA_MODULUS_LEN;i++)
		fprintf(KeyFile,"%d\n",publicKey.exponent[i]);

//		typedef struct {
//		  unsigned short int bits;                     
//		  unsigned char modulus[MAX_RSA_MODULUS_LEN];  
//		  unsigned char publicExponent[MAX_RSA_MODULUS_LEN];     
//		  unsigned char exponent[MAX_RSA_MODULUS_LEN]; 
//		  unsigned char prime[2][MAX_RSA_PRIME_LEN];   
//		  unsigned char primeExponent[2][MAX_RSA_PRIME_LEN];     
//		  unsigned char coefficient[MAX_RSA_PRIME_LEN];          
//		} R_RSA_PRIVATE_KEY;

	fprintf(KeyFile,"%d\n",privateKey.bits);
	for(i=0;i<MAX_RSA_MODULUS_LEN;i++)
		fprintf(KeyFile,"%d\n",privateKey.modulus[i]);
	for(i=0;i<MAX_RSA_MODULUS_LEN;i++)
		fprintf(KeyFile,"%d\n",privateKey.publicExponent[i]);
	for(i=0;i<MAX_RSA_MODULUS_LEN;i++)
		fprintf(KeyFile,"%d\n",privateKey.exponent[i]);
	for(i=0;i<MAX_RSA_PRIME_LEN;i++)
		fprintf(KeyFile,"%d\n",privateKey.prime[0][i]);
	for(i=0;i<MAX_RSA_PRIME_LEN;i++)
		fprintf(KeyFile,"%d\n",privateKey.prime[1][i]);
	for(i=0;i<MAX_RSA_PRIME_LEN;i++)
		fprintf(KeyFile,"%d\n",privateKey.primeExponent[0][i]);
	for(i=0;i<MAX_RSA_PRIME_LEN;i++)
		fprintf(KeyFile,"%d\n",privateKey.primeExponent[1][i]);
	for(i=0;i<MAX_RSA_PRIME_LEN;i++)
		fprintf(KeyFile,"%d\n",privateKey.coefficient[i]);
	fclose(KeyFile);
	return 1;
*/
}


int LodeKeys(char* filename,R_RSA_PUBLIC_KEY * publicKey,R_RSA_PRIVATE_KEY * privateKey)
{
	FILE* KeyFile;

	KeyFile=fopen(filename,"rb");
	if( KeyFile== NULL )
		return 0;

	fread(publicKey,sizeof(R_RSA_PUBLIC_KEY),1,KeyFile);
	fread(privateKey,sizeof(R_RSA_PRIVATE_KEY),1,KeyFile);

	fclose(KeyFile);
	return 1;

/*
	FILE* KeyFile;
	int i;

	KeyFile=fopen(filename,"rt");
	if( KeyFile== NULL )
		return 0;

//		typedef struct {
//		  unsigned short int bits;                     
//		  unsigned char modulus[MAX_RSA_MODULUS_LEN];  
//		  unsigned char exponent[MAX_RSA_MODULUS_LEN]; 
//		} R_RSA_PUBLIC_KEY;
	fscanf(KeyFile,"%d",&publicKey->bits);
	for(i=0;i<MAX_RSA_MODULUS_LEN;i++)
		fscanf(KeyFile,"%d",&publicKey->modulus[i]);
	for(i=0;i<MAX_RSA_MODULUS_LEN;i++)
		fscanf(KeyFile,"%d",&publicKey->exponent[i]);

//		typedef struct {
//		  unsigned short int bits;                     
//		  unsigned char modulus[MAX_RSA_MODULUS_LEN];  
//		  unsigned char publicExponent[MAX_RSA_MODULUS_LEN];     
//		  unsigned char exponent[MAX_RSA_MODULUS_LEN]; 
//		  unsigned char prime[2][MAX_RSA_PRIME_LEN];   
//		  unsigned char primeExponent[2][MAX_RSA_PRIME_LEN];     
//		  unsigned char coefficient[MAX_RSA_PRIME_LEN];          
//		} R_RSA_PRIVATE_KEY;

	fscanf(KeyFile,"%d",&privateKey->bits);
	for(i=0;i<MAX_RSA_MODULUS_LEN;i++)
		fscanf(KeyFile,"%d",&privateKey->modulus[i]);
	for(i=0;i<MAX_RSA_MODULUS_LEN;i++)
		fscanf(KeyFile,"%d",&privateKey->publicExponent[i]);
	for(i=0;i<MAX_RSA_MODULUS_LEN;i++)
		fscanf(KeyFile,"%d",&privateKey->exponent[i]);
	for(i=0;i<MAX_RSA_PRIME_LEN;i++)
		fscanf(KeyFile,"%d",&privateKey->prime[0][i]);
	for(i=0;i<MAX_RSA_PRIME_LEN;i++)
		fscanf(KeyFile,"%d",&privateKey->prime[1][i]);
	for(i=0;i<MAX_RSA_PRIME_LEN;i++)
		fscanf(KeyFile,"%d",&privateKey->primeExponent[0][i]);
	for(i=0;i<MAX_RSA_PRIME_LEN;i++)
		fscanf(KeyFile,"%d",&privateKey->primeExponent[1][i]);
	for(i=0;i<MAX_RSA_PRIME_LEN;i++)
		fscanf(KeyFile,"%d",&privateKey->coefficient[i]);
	fclose(KeyFile);
	return 1;
*/
}

int FilePublicDecrypt(char* inputfile,char* outputfile,R_RSA_PUBLIC_KEY * publicKey)
{
	return 0;
}
int FilePublicEncrypt(char* inputfile,char* outputfile,R_RSA_PUBLIC_KEY * publicKey)
{
	return 0;
}
int FilePrivateDecrypt(char* inputfile,char* outputfile,R_RSA_PRIVATE_KEY * privateKey)
{
	return 0;
}
int FilePrivateEncrypt(char* inputfile,char* outputfile,R_RSA_PRIVATE_KEY * privateKey)
{
	return 0;
}

⌨️ 快捷键说明

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