用crypto++实现简单加密解密MFC小程序

开源库Crypto,专门做加密解密的,www.cryptopp.com上的原话是“Crypto++ Library is a free C++ class library of cryptographic schemes.”。下载然后往VS的项目里添加第三方静态库。这里列出当时我查到的自己觉得有用的资料吧。

http://blog.csdn.net/leonardwang/article/details/5751158  简单的安装

http://blog.csdn.net/ecjtuync/article/details/3298374  这个全,还相当有用

http://www.cryptopp.com/wiki/Main_Page  这是官方的FAQ

 

剩下就是开始码窗口,码控件,码事件,就没啥意思了,唯一我想记录下的就是——以前写MFC程序也很头疼的——字符串的转换问题! 这个问题太烦人了,整个程序我觉得我一般以上的时间和精力都花费在这上边了,各种转来转去的,CString,string ,char *就他哥仨互相转,烦死了,以免以后也烦,记录转换方法如下:

CString转char *

网上查了好多,有的我试不好使。比如直接用LPCTSTR,主要是因为字符集的问题,我用的unicode字符集。

还有用CString str; str.GetBuffer(str.GetLength())的,也不行,因为GetBuffer函数返回值类型还是LPTSTR。

还有说用WideCharToMultiByte这个函数的,我没具体查,反正我用了然后调试看了下,没转过去。最后发现一个方法不错  

USES_CONVERSION;
char* plainFileName = T2A(cstr);开始不知道这个USES_CONVERSION宏,一查发现原来使用还是有风险的。有篇博客里这么说的:

谨慎使用USES_CONVERSION;,这个宏不能使用在大的循环体和大的函数中,因为其分配的内存在函数结束的时候才能释放,所以存在堆栈溢出的问题。

 

 

 

另外付上两篇关于这个宏的原文地址 http://untidy.net/blog/2004/12/17/uses_conversion/

http://www.codeguru.com/forum/showthread.php?p=1135929#post1135929

char* 转CString 

其实就是直接赋值就能转过去,还可以用CString对象的Format函数 CString strtest; 

char * charpoint; 
charpoint="give string a value"; 
strtest=charpoint;

string 转 CString 

             这个好麻烦,如果不是unicode的话,直接用CString的format和string的c_str就OK。宽字符的话还要进行宽字符转换。

CString 转 string

              CStringW temp;

CStringA str(tempSource);
temp.ReleaseBuffer();
string source = str.GetBuffer(0);
str.ReleaseBuffer();

 啰啰嗦嗦写了半天,其实如果不是用unicode就很容易,如果使用了unicode就要注意用_T,或者TEXT等宏,使用TCHAR而不是char。

最后补一句:宽字符什么的是在是太烦人了!!

源码不知道怎么上传,算了,不传了,代码质量也一般。

你可能感兴趣的:(加密解密,MFC,mfc,解密,加密,string,library,class)