文件操作的基本流程是这样的,有没有办法可以提高加、解密的速度?
内存映射具体实行起来,怎样应用呀?
加密:得到要加密文件->得到本地主机号->得到收方主机号->得到新生成的文件->向新生成的文件中写入收、发方主机号->向新生成的文件中写入解密密钥->写入加密后的文件的数据(分包处理)->关闭所有要关闭的东西解密:得到要解密的文件->读取收文主机号和发方主机号->判断是否有权解密->得到解密密钥->得到新生成的文件->向新生成的文件中写入解密后的数据(分包处理)->关闭所有要关闭的东西大致这样吧,就是加密后文件大小会改变,必须写入些相关的信息。我用内存映射的方式并没有提高速度,是不是我用的方法不对,没有发挥内存映射的优越性?
请大家帮帮忙,提些好的处理文件的建议,多谢了!!!

解决方案 »

  1.   

    how about ur algorithm of Cryptography?
      

  2.   

    See the link below, FYI :
    http://www.codeproject.com/cpp/#Cryptography
      

  3.   

    看起来瓶颈在file io cache里面。可以试两种方法,不用file mapping:1.多线程文件用非缓冲方式打开,CreateFile的倒数第二个参数,设置FILE_FLAG_NO_BUFFERING。创建三个线程,一个用于读取文件数据,一个用来加密,一个用来写文件。三个操作可以并发运行,应该可以提高速度。2.FILE_FLAG_OVERLAPPED方式文件用非缓冲方式打开,使用异步方式读写。
      

  4.   

    可能用非缓冲方式读写文件就可以解决问题,CreateFile的时候设置FILE_FLAG_NO_BUFFERING。不过每次读写的数据量需要足够大,比如128K,并且是系统section大小的整数被(用GetDiskFreeSpace取得)。可以试file mapping、ReadFile/WriteFile,可能效率都差不多。