关于VC中AES算法加解密速度问题

lll5008 2008-07-10 05:02:57
我是一个刚学VC的菜鸟,找了一个AES加解密文件的程序,加解密小文件的时候速度不错,可是几M或几十M的文件的时候速度很慢,该怎么修改程序啊
加密程序如下:
if(m_filename=="")return;
FILE* ff;
FILE* fp;
ff=fopen((LPCTSTR)m_filename,"rb");
if(!ff)return;
fseek(ff,0,SEEK_END);
long lFileLen=ftell(ff);
fseek(ff,0,SEEK_SET);
long c=lFileLen/16;
long d=lFileLen%16;
m_filename+=".aen";
fp=fopen((LPCTSTR)m_filename,"ab");
if(!fp){fclose(ff);return;}
unsigned char inBuff[25],ouBuff[25];
KAES kaes(24,(unsigned char*)"\x0\x1\x2\x3\x4\x5\x6\x7\x8\x9\xa\xb\xc\xd\xe\xf\x10\x11\x12\x13\x14\x15\x16\x17");
for(long i=0;i<c;i++)
{
fread(inBuff,1,16,ff);
kaes.Cipher(inBuff,ouBuff);
fwrite(ouBuff,1,16,fp);
}
if(d)
{
memset(inBuff,0,16);
c=fread(inBuff,1,d,ff);
kaes.Cipher(inBuff,ouBuff);
fwrite(ouBuff,1,16,fp);
}
fclose(ff);
fclose(fp);
MessageBox("加密成功!");
...全文
294 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
lk349129337 2009-04-03
  • 打赏
  • 举报
回复
这个慢主要是因为文件读写慢,但都读出来的话当文件大了会出现内存不足的现象。我想可以分配100M左右的内存,一次读写100M的数据,这样能起到折中的效果。
lll5008 2008-07-11
  • 打赏
  • 举报
回复
怎么算啊.
Everybody555 2008-07-11
  • 打赏
  • 举报
回复

建议不要读一点 加密再写一点。
可以都读出来 在内存中操作,都加密完再写到文件中
cofanz 2008-07-11
  • 打赏
  • 举报
回复
这样写瓶颈最要在读写文件上.
cppwin 2008-07-11
  • 打赏
  • 举报
回复
在内存中,对一段10MB的数据加密,记下时间.
速度= 10MB / 时间
然后考虑cpu频率.

网上大多数aes代码速度都差不多,用汇编的略快一点.但都是一个数量级.
你可以多比较几种,选一个快点儿的.
改代码的难度很大.
cppwin 2008-07-10
  • 打赏
  • 举报
回复
算一下你的程序的速度,计算速度时,排除文件读写的影响.

18,356

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 网络编程
c++c语言开发语言 技术论坛(原bbs)
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧