cm007
驱动牛犊
驱动牛犊
  • 注册日期2007-10-31
  • 最后登录2009-11-04
  • 粉丝0
  • 关注0
  • 积分2分
  • 威望38点
  • 贡献值0点
  • 好评度21点
  • 原创分0分
  • 专家分0分
阅读:2879回复:8

关于在minifilter中使用分组加密算法的加密写问题

楼主#
更多 发布于:2008-08-19 15:09
相关贴:http://bbs.driverdevelop.com/htm_data/39/0704/100483.html

在prewrite写中,如果用iopb->Parameters.Write.Length作为分组加密的长度肯定不行,因为这个值始终为0x1000,即便我只写7个字节的文本文件。然而,分组加密例如AES,分组长度如果为16字节,那么注定在解密的时候失败,因为只能读7个字节的密文而正常解密需要一个分组长度16字节。

其实,这个缓冲区中前7个字节是正常的写入数据,后面的全部用'\ 0'填充,直到0x1000

"如果strlen((char*)Buffer)得到缓冲区的真实长度作为输入来进行加解密操作,那么加密是没有问题的,但读数据时解密又出现问题了,因为系统初始化时都要对每个卷中的目录进行扫描,并从中读出一些数据,这些数据是没有规则的,可能会导致strlen((char *)Buffer)等于0,不能正确的解密意味着不能初始化卷,这样就不能识别卷。"------摘录至http://bbs.driverdevelop.com/read.php?tid-100483-fpage-0-toread--page-3.html

如果从后向前搜索至不为'\0'的位置为要写入的数据长度的话,是否又可以呢?我想如过在prewrite中晓得要写入的真正长度就不会有这个问题了。

实验证明,如果用异或来加密肯定没问题,因为异或的分组长度为1,所以不会错。但如果分组长度大于1,便可能出错。请问大牛们是怎么解决这个问题的呢?还是我的分组加密思路不对?

最新喜欢:

123218lzq123218... arbelarbel
cm007
驱动牛犊
驱动牛犊
  • 注册日期2007-10-31
  • 最后登录2009-11-04
  • 粉丝0
  • 关注0
  • 积分2分
  • 威望38点
  • 贡献值0点
  • 好评度21点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2008-08-19 16:37
可以详细点么,如何对齐呢?我的加密并没有使用加密文件头什么来着。。。
游客

返回顶部