• 大小: 13KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-06-08
  • 语言: C/C++
  • 标签: c/c++  RSA  

资源简介

简单的c/c++实现的基于文件的RSA加解密

资源截图

代码片段和文件信息

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

/******************************************************************************/
#include 
#include 
using namespace std;
#include 
#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 string &strData )
{
int iFileLen=0;

//! 打开文件
ifstream file(strFile);
if (! file.is_open())

cout << “无法打开该文件,请检查文件名是否正确,是否隐匿了拓展名 \n“; 
return 0;
}
file.seekg(0 ios::end);
    iFileLen = file.tellg();
    file.seekg(0 ios::beg);
if( iFileLen>MAX_FILE )
{
printf( “文件长度不能大于 %dM!\n“ MAX_FILE/(1024*1024) );
return 0;
}

char *inBuff = new char[iFileLen+1];

file.read( inBuff iFileLen );
inBuff[iFileLen]=‘\0‘;
strData=inBuff;
delete []inBuff;
file.close();

return iFileLen;
}

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

/******************************************************************************/
void FileOut( const char *strOut

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件      49664  2014-01-01 22:45  RSA.opt

     文件        240  2014-01-01 22:44  RSA.plg

     文件         10  2014-01-02 11:26  RSA.txt

     文件          0  2014-01-02 11:26  RSA加密密文.txt

     文件          0  2014-01-02 11:26  RSA解密明文.txt

     文件      10030  2014-01-01 22:43  main.cpp

     文件       4967  2014-01-01 22:38  RSA.cpp

     文件       4119  2009-06-07 00:00  RSA.dsp

     文件        529  2009-06-07 00:00  RSA.dsw

     文件        752  2014-01-01 20:37  RSA.h

     文件      50176  2014-01-01 22:45  RSA.ncb

----------- ---------  ---------- -----  ----

               120487                    11


评论

共有 条评论