⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cfgcrypt.cpp

📁 移动使用的加密程序
💻 CPP
字号:
#include <algorithm>#include "cfgcrypt.h"#ifdef _WIN32	#define snprintf _snprintf#endifusing namespace std;/***********************************************************************************/string& ltrim(string& s){	int (*func)(int) = isspace;	string::iterator iter;	iter = find_if(s.begin(), s.end(), not1(ptr_fun(func)));	s.erase(s.begin(), iter);	return s;}string& rtrim(string& s){	int (*func)(int) = isspace;	string::reverse_iterator iter;	iter = find_if(s.rbegin(), s.rend(), not1(ptr_fun(func)));	s.erase(iter.base(), s.end());	return s;}//删除字符串右边的空格char* rtrim(char* p){	if(p==NULL)	{		return p;	}	char* q = p+strlen(p)-1;	while(isspace(*q))	{		--q;	}	*(q+1) = '\0';	return p;}//删除字符串左边的空格char* ltrim(char* p){	if(p==NULL)	{		return p;	}	char* q = p;	while(isspace(*q))	{		++q;	}	if(p!=q)	{		while(*p++ = *q++){}	}	return p;}string& trim(string& s){	return rtrim(ltrim(s));}char* trim(char* s){	return ltrim(rtrim(s));}/***********************************************************************************/CCfgCrypt::CCfgCrypt()			: m_eScanRet(E_SCAN_NO){}CCfgCrypt::~CCfgCrypt(){}void CCfgCrypt::scanCfgFile(){	const char* pszCfgFile = getenv("PASSWORD_ETC");	if(pszCfgFile == NULL)	{		m_strScanErr.assign("Env variable 'PASSWORD_ETC' missed!");		m_eScanRet = E_SCAN_ERR;		return;	}	FILE* f = fopen(pszCfgFile, "r");	if(f == NULL)	{		m_strScanErr.assign("Failed to open file: ").append(pszCfgFile);		m_eScanRet = E_SCAN_ERR;		return;	}	while(!feof(f))	{		char szLine[128];		fgets(szLine, sizeof(szLine), f);		string sLine = ltrim(szLine);		if(sLine.empty() || sLine[0]=='#')		{			continue;		}		string::size_type pos = sLine.find("=");		if(pos==string::npos)		{			continue;		}		string strTemp = sLine.substr(0, pos);		string s1 = trim(strTemp);		strTemp = sLine.substr(pos+1, sLine.size()-pos-1);		string s2 = trim(strTemp);		map<string, string>::iterator iter1 = m_CfgDict.lower_bound(s1);		if(iter1 != m_CfgDict.end() && s1.compare(iter1->first) == 0)		{			m_strScanErr.assign("Duplicate item: ").append(s1);			m_eScanRet = E_SCAN_ERR;			fclose(f);			return;		}		else		{			m_CfgDict.insert(iter1, make_pair(s1, s2));		}	}	fclose(f);	m_eScanRet = E_SCAN_YES;	return;}bool CCfgCrypt::getValue(const char* pszItem, string& strValue){	if(m_eScanRet == E_SCAN_NO)	{		this->scanCfgFile();	}	if(m_eScanRet == E_SCAN_ERR)	{		strValue.assign(m_strScanErr);		return false;	}	map<string, string>::const_iterator iter = m_CfgDict.find(pszItem);	if(iter!=m_CfgDict.end())	{		char szOut[512];		memset(szOut, 0, sizeof(szOut));		TCrypt::Decrypt(iter->second.c_str(), szOut, sizeof(szOut));		strValue.assign(szOut);		return true;	}	else	{		char s[128];		memset(s, 0, sizeof(s));		snprintf(s, sizeof(s), "Config error!Item '%s' missed!", pszItem);		strValue.assign(s);		return false;	}	return false;}

⌨️ 快捷键说明

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