加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

Crypto++ 加密解密 (文件到内存,内存到文件,内存到内存,文件到文件)

(2014-11-05 15:20:33)
标签:

windows

分类: C学习
一.   下载Crypto++ Library
二.   建立自己使用的Crypto++ Library 
从官方网下载的Crypto++开源库, 编译链接生成cryptlib.lib,然后添加Crypto++的头文件到你自己的工程中,别忘了#pragma comment(lib, "cryptlib.lib")添加引用库 和 #include。
另外也可以添加 using namespace CryptoPP;
下面主要介绍加密或者解密过程从内存到内存 或者是 从内存到文件 或者从文件到内存


  1. unsigned char key[] {0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08, 0x01,0x02, 0x03,0x04,0x05,0x06,0x07,0x08};//AES::DEFAULT_KEYLENGTH  
  2.     unsigned char iv[]  {0x01,0x02,0x03,0x03,0x03,0x03,0x03,0x03, 0x03,0x03, 0x01,0x02,0x03,0x03,0x03,0x03};  
  3.     int keysize 16;  
  4.   
  5.     string  message "Hello World!" 
  6.     string  strEncTxt;  
  7.     string  strDecTxt;  
  8.   
  9. //内存到内存
  10.     //CBC PADDING  
  11.     //AES-CBC Encrypt(ONE_AND_ZEROS_PADDING)  
  12.     CBC_Mode::Encryption  Encryptor1(key,keysize,iv);   
  13.     StringSource(   message,  
  14.         true 
  15.         new StreamTransformationFilter( Encryptor1,  
  16.         new StringSink( strEncTxt ),  
  17.         BlockPaddingSchemeDef::BlockPaddingScheme::ONE_AND_ZEROS_PADDING,  
  18.         true 
  19.         );  
  20.   
  21.     //AES-CBC Decrypt  
  22.     CBC_Mode::Decryption Decryptor1(key,keysize,iv);   
  23.     StringSource(   strEncTxt,   
  24.         true 
  25.         new StreamTransformationFilter( Decryptor1,  
  26.         new StringSink( strDecTxt ),  
  27.         BlockPaddingSchemeDef::BlockPaddingScheme::ONE_AND_ZEROS_PADDING,  
  28.         true 
  29.         );  
  30.   
  31. //文件到内存---加密解密雷同
  32. const char* infilename=“testfile.txt”
  33. //AES Decrypt  
  34.   CBC_Mode::Decryption Decryptor2(key,keysize,iv);   
  35. FileSource(infilename, true, 
  36. new StreamTransformationFilter( Decryptor2,  
  37. new StringSink( strDecTxt ),  
  38. BlockPaddingSchemeDef::BlockPaddingScheme::ONE_AND_ZEROS_PADDING,  
  39. true)
  40. );

  41. //从内存到文件---加密解密雷同
  42. const char* outfilename=“testfile.txt”
  43. CBC_Mode::Encryption  Encryptor2(key,keysize,iv);   
  44. StringSource(   strDecTxt ,  
  45. true,  
  46. new StreamTransformationFilter(Encryptor2, 
  47. new FileSink(outfilename),
  48. BlockPaddingSchemeDef::BlockPaddingScheme::ONE_AND_ZEROS_PADDING,  
  49. true) 
  50. );  

  51. //文件到文件
  52. CBC_Mode::Encryption  Encryptor3(key,keysize,iv); 
  53. FileSource(infile, truenew StreamTransformationFilter(aes, new FileSink(outfile)));

  54.   


参考:
http://blog.csdn.net/wangweitingaabbcc/article/details/11156721
http://www.cppblog.com/gezidan/archive/2011/08/05/152562.html
http://blog.csdn.net/wangweitingaabbcc/article/details/11170131
http://my.oschina.net/ypimgt/blog/88429?from=rss
http://blog.csdn.net/vrix/article/details/1812797
http://blog.csdn.net/lee353086/article/details/7594165


0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有