wuqiu
驱动牛犊
驱动牛犊
  • 注册日期2003-04-24
  • 最后登录2007-09-16
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望1点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
阅读:2344回复:7

filedisk的加密

楼主#
更多 发布于:2003-11-28 23:29
最近对filedisk很感兴趣,想对它加上加密技术,我看过以前的贴子,也大概了解了一些,但是有几个问题一直想不通,希望你能帮我一下,不胜感激!

一、一般的加密算法在加完密后字符串会变长,这样在写入与读出时如何处理呀,或者有没有加完密后不会变长的算法。

二、密匙是如何传递给驱动程序的,是不是在Mount时跟随OPEN_FILE_INFORMATION一样进去呀(加多一个字段),但是这个变量是不是全局的呀,在Read/Write里如何得到它。

三、Read/Write的块大小是多少呀(不可能一个字节一个字节的吧)

能否提供一种好的加密算法代码呀

我初学驱动,还望多多帮助!
wuqiu
驱动牛犊
驱动牛犊
  • 注册日期2003-04-24
  • 最后登录2007-09-16
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望1点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2003-11-29 16:27
我真笨,原来加密算法是不会改变长度的,之所以会“变长”是在显示的时候进进了BASE64编码而已。

现在这个问题已解决了,但是,我加入了加密算法后,就无法进行格式化了。不知哪里出了问题。大家帮我看看

            case IRP_MJ_READ:
CurrentAddress = MmGetSystemAddressForMdlSafe(irp->MdlAddress, NormalPagePriority);
tmplen = io_stack->Parameters.Read.Length;

if ((tmplen%8)!=0)
tmplen = (tmplen/8+1)*8;

buf=ExAllocatePool(NonPagedPool,tmplen);

// 偏移IMAGE_HEAD_SIZE个单位,光盘文件除外
if (device_object->DeviceType != FILE_DEVICE_CD_ROM)
io_stack->Parameters.Read.ByteOffset.QuadPart+=IMAGE_HEAD_SIZE;
                ZwReadFile(
                    device_extension->file_handle,
                    NULL,
                    NULL,
                    NULL,
                    &irp->IoStatus,
buf,
                    io_stack->Parameters.Read.Length,
                    &io_stack->Parameters.Read.ByteOffset,
                    NULL
                    );
des_ec(buf,buf,\"12345678\");
RtlCopyMemory(CurrentAddress,buf,io_stack->Parameters.Read.Length);
ExFreePool(buf);

                break;

            case IRP_MJ_WRITE:
// 偏移IMAGE_HEAD_SIZE个单位,光盘文件除外
if (device_object->DeviceType != FILE_DEVICE_CD_ROM)
io_stack->Parameters.Write.ByteOffset.QuadPart+=IMAGE_HEAD_SIZE;
if ((io_stack->Parameters.Write.ByteOffset.QuadPart +
                     io_stack->Parameters.Write.Length) >
                     device_extension->file_size.QuadPart)
                {
                    irp->IoStatus.Status = STATUS_INVALID_PARAMETER;
                    irp->IoStatus.Information = 0;
                }

CurrentAddress = MmGetSystemAddressForMdlSafe(irp->MdlAddress, NormalPagePriority);
tmplen = io_stack->Parameters.Write.Length;
if ((tmplen%8)!=0)
tmplen = (tmplen/8+1)*8;

buf=ExAllocatePool(NonPagedPool,tmplen);
RtlCopyMemory(buf,CurrentAddress,io_stack->Parameters.Write.Length);
des_ec(buf,buf,\"12345678\");

                ZwWriteFile(
                    device_extension->file_handle,
                    NULL,
                    NULL,
                    NULL,
                    &irp->IoStatus,
buf,
                    io_stack->Parameters.Write.Length,
                    &io_stack->Parameters.Write.ByteOffset,
                    NULL
                    );

ExFreePool(buf);
                break;
wuqiu
驱动牛犊
驱动牛犊
  • 注册日期2003-04-24
  • 最后登录2007-09-16
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望1点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2003-11-29 17:44
问题发现了,但不知如何解决

进行des_ec(buf,buf,\"12345678\");
时,它只对buf中第一个\'\\0\'值之前加密,之后的就不加密了。

如何克服这个难点。

唉,这段时间都是我自问自答,难道高手就不出现吗?
wuqiu
驱动牛犊
驱动牛犊
  • 注册日期2003-04-24
  • 最后登录2007-09-16
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望1点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
地板#
发布于:2003-11-30 18:02
唉,果然是我自问自答。
以上问题现已解决。

但是,出现了另一个难题。
我采用的是DES加密,可是在当对磁盘操作时,显得有点迟泄,特别是大量数据copy或打开大文件时。

而且,偶而会出错,在经过大量操作后,偶而会出来错误,然后信息就全乱了,重新mount后就提示没有格式化,然后,连格式化都无法进行了。但是,出现上述错误后,我只需stop 一下驱动程序,在start起来,问题又没了。

高手们,虽藏了。我虽然是新手,但总算克服了重重困难。如果高手们能指点一二,我就不用这么辛苦了。
nustzhua
驱动中牛
驱动中牛
  • 注册日期2002-06-19
  • 最后登录2015-09-27
  • 粉丝0
  • 关注0
  • 积分18分
  • 威望2点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2003-11-30 18:13
驱动这个东东,一点小错误就会让人郁闷很久,没有看到实在的问题,一般别人也帮不了了。
不限容量的免费邮箱 www.k65.net
Leopard
驱动老牛
驱动老牛
  • 注册日期2001-07-13
  • 最后登录2021-12-15
  • 粉丝0
  • 关注0
  • 积分8分
  • 威望53点
  • 贡献值0点
  • 好评度19点
  • 原创分0分
  • 专家分0分
  • 社区居民
  • 忠实会员
5楼#
发布于:2003-12-03 15:06
驱动这个东东,一点小错误就会让人郁闷很久,没有看到实在的问题,一般别人也帮不了了。
 

同意!
Osmanager
驱动牛犊
驱动牛犊
  • 注册日期2003-04-09
  • 最后登录2010-09-08
  • 粉丝0
  • 关注0
  • 积分1分
  • 威望1点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2003-12-12 12:19
加密后效果如何阿,对性能影响大吗,关注
lideqi1987
驱动牛犊
驱动牛犊
  • 注册日期2010-03-14
  • 最后登录2010-05-04
  • 粉丝0
  • 关注0
  • 积分9分
  • 威望91点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2010-04-15 11:20
感谢楼主对经验的分享
游客

返回顶部