messagedigest.cpp

来自「实现多种加解密算法」· C++ 代码 · 共 42 行

CPP
42
字号

//MessageDigest.cpp

#include "stdafx.h"
#include "MessageDigest.h"
#include "DoubleBuffering.h"

#include <exception>
#include <fstream>
#include <strstream>

using namespace std;

//Digesting a Full File
void IMessageDigest::DigestFile(string const& rostrFileIn, char* pcDigest)
{
	//Is the User's responsability to ensure that pcDigest is appropriately allocated
	//Open Input File
	ifstream in(rostrFileIn.c_str(), ios::binary);
	if(!in)
	{
		ostrstream ostr;
		ostr << "FileDigest ERROR: in IMessageDigest::DigestFile(): Cannot open File " << rostrFileIn << "!" << ends;
		string ostrMsg = ostr.str();
		ostr.freeze(false);
		throw runtime_error(ostrMsg);
	}
	//Resetting first
	Reset();
	//Reading from file
	char szLargeBuff[BUFF_LEN+1] = {0};
	char szBuff[DATA_LEN+1] = {0};
	CDoubleBuffering oDoubleBuffering(in, szLargeBuff, BUFF_LEN, DATA_LEN);
	int iRead;
	while((iRead=oDoubleBuffering.GetData(szBuff)) > 0)
		AddData(szBuff, iRead);
	in.close();
	//Final Step
	FinalDigest(pcDigest);
}

⌨️ 快捷键说明

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