資源簡介
簡單的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? {
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:指向文件內容緩沖區
// 返回:實際讀取內容大?。ㄗ止潱?br/>
/******************************************************************************/
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
- 上一篇:c/c++實現的基于文件的DES加解密
- 下一篇:逆波蘭表達式 c語言實現
評論
共有 條評論