• 大小: 4KB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2021-05-22
  • 语言: C/C++
  • 标签: RSA  

资源简介

RSA加解密(c语言实现).zip

资源截图

代码片段和文件信息

/******************************************************************************/
// 工程:RSA
// 功能:RSA加、解密文件
//  作者:jlcss|ExpNIS

/******************************************************************************/

#include 
#include 
#include 
#include “rsa.h“

#define DECRYPT_FILE “RSA加密密文.txt“
#define ENCRYPT_FILE “RSA解密明文.txt“
//! 约束文件最大2M
#define MAX_FILE 1024*1024*2

/******************************************************************************/
// 名称:usage
// 功能:帮助信息
//  参数:应用程序名称
// 返回:提示信息

/******************************************************************************/
void Usage( const char *appname )
{
printf( “\n\tusage:rsa -k 素数P 素数Q\n“ );
printf( “\tusage: rsa -e 明文文件 公钥e 公钥n\n“ );
printf( “\tusage: rsa -d 密文文件 私钥d 私钥n\n“ );
}

/******************************************************************************/
// 名称:IsNumber
// 功能:判断数字字符数组
//  参数:strNumber:字符数组
// 返回:数字字组数组返回true,否则返回false;

/******************************************************************************/
bool IsNumber( const char *strNumber )
{
unsigned int i;

if( !strNumber )
return false;

for ( i = 0 ; i < strlen(strNumber) ; i++ )
{
if ( strNumber[i] < ‘0‘ || strNumber[i] > ‘9‘ )
return false;
}

return true;
}

/******************************************************************************/
// 名称:IsPrimeNumber
// 功能:判断素数
//  参数:num: 输入整数
// 返回:素数返回true,否则返回false;

/******************************************************************************/
bool IsPrimeNumber( unsigned int num )
{
unsigned int i;
if( num <= 1 )
return false;

unsigned int sqr = (unsigned int)sqrt((double)num);
for( i = 2; i <= sqr; i++ )
{
if( num % i == 0 )
return false;
}

return true;
}

/******************************************************************************/
// 名称:FileIn
// 功能:读取磁盘文件到内存
//  参数:strFile:文件名称;inBuff:指向文件内容缓冲区
// 返回:实际读取内容大小(字节)

/******************************************************************************/
int FileIn( const char *strFile unsigned char *&inBuff )
{
int iFileLen=0 iBuffLen=0;

//! 打开密文文件
CFile file( strFile CFile::modeRead );
iFileLen = ( int )file.GetLength();
if( iFileLen>MAX_FILE )
{
printf( “文件长度不能大于 %dM!\n“ MAX_FILE/(1024*1024) );
goto out;
}

if( iFileLen % 8 != 0 )
iBuffLen = ( iFileLen/8+1 ) * 8;
else
iBuffLen = iFileLen;

inBuff = new unsigned char[iBuffLen];
if( !inBuff )
goto out;

ZeroMemory( inBuff iBuffLen );

file.Read( inBuff iFileLen );
file.Close();

out:
return iBuffLen;
}

/******************************************************************************/
// 名称:FileOut
// 功能:加/解密结果输出到当前目录磁盘文件中
//  参数:strOut指向输出字符缓冲区,输出大小len,strFile为输出文件
// 返回:无

/******************************************************************************/
void FileOut( const void *strOut int len const char *strFile )
{
//! 输出到文件
CFile outfile( strFile  

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2016-12-06 23:57  RSA\
     文件        5334  2009-12-10 18:53  RSA\main.cpp
     文件        4469  2009-12-10 18:53  RSA\RSA.cpp
     文件         582  2009-12-10 18:52  RSA\RSA.h

评论

共有 条评论