C++根据加密头信息,判断文件是否为加密文件

来源:互联网 发布:apm2.8源码编译 编辑:程序博客网 时间:2024/05/16 14:47

        针对某种加密程序,会对本地文件加密,并且会在文件头写入加密头信息(可以使用UE进行文件二进制查看),现在贴上一段代码:读取当前文件的加密头信息,判断该文件是否为加密文件。

int CLdScanFileDlg::FileDecryptStatus( wchar_t* v_strFile,int v_iStartIndex,int v_iReadCount,wchar_t* v_strContent){USES_CONVERSION;BYTE buff[MAX_BUFF_LENGTH] = {0};string str = W2A(v_strFile);FILE *fp;fp = fopen(str.c_str(), "rb+");if (fp == NULL){m_strLog.Format(L"Judge File[%s] Decrypt Failed, GetLaseError:%d", v_strFile, GetLastError());theApp.m_Errorlog.AddMsgLog(m_strLog, false);return 3;}//"181B031A1510197C0A190E7C6F726C5F"//5C5C5C5C5C5C5C1D390344FFFFFFFFFF//!< 设置开始读取文件的位置fseek(fp, v_iStartIndex, SEEK_SET);//!< 读取文件长度fread(buff, sizeof(BYTE), v_iReadCount, fp);fclose(fp);fp = NULL;int iTemp;char bValue[3]={0};char hs[MAX_BUFF_LENGTH]={0};theApp.m_Errorlog.WcharToChar(v_strContent,hs);    int icurrent=0;for ( int i = 0 ; i < v_iReadCount; i++){memcpy(bValue,hs+icurrent,2);sscanf(bValue, "%x", &iTemp);if(iTemp != buff[i]){return 2;}icurrent = icurrent + 2;}return 1;}

v_strFile:代表文件全路径

v_iStartIndex:代表读取二进制文件开始位置

v_iReadCount:代表读取位数

v_strContent:代表加密头信息

0 0
原创粉丝点击