阅读:2292回复:13
本人新手,问个加密长度的问题
我修改的filemon的程序,但是发现只能加密小于64K的文件,我搜索了一下以前的帖子,说只要处理
if((Irp->Flags & (IRP_NOCACHE | IRP_PAGING_IO | IRP_SYNCHRONOUS_PAGING_IO))) 就可以了,但是我就是这么处理的啊,还是不能加密大于64K的文件 后面的文件是明文存储在磁盘上的。 请问这个问题应该怎么解决啊????? |
|
沙发#
发布于:2005-06-08 09:12
补充一下,我用的加密算法就是简单的取反。
|
|
板凳#
发布于:2005-06-08 10:08
对于大于64k的文件,设个断点跟踪一下,大于64k的部分,没有走到你加密的部分吗?
|
|
地板#
发布于:2005-06-08 10:23
这个问题我遇到过,也是加密大于64K字节的文本文件,后面的文件内容就没有处理,后来在Write当中对需要处理的文件内容长度进行了调整,不管一次读写长度为多少,都将其分成n个512字节大小的数据块进行加解密,以后就搞定了,具体为什么对64K以后的数据没有加密,就没有去深究,我也想知道到底是什么原因?
|
|
地下室#
发布于:2005-06-08 10:29
现在的问题是我加密的文件很大(不止64K)的时候总是在末尾有一部分数据没有被加密和解密,我检测filemon发现好像是没有来得及加密,是不是我的加密算法比较慢的缘故啊????
|
|
5楼#
发布于:2005-06-08 10:44
to joshua_yu :
你是怎么把它分成n个512字节进行处理的啊? 我试过但是没有成功,是不是我处理的方法错误了啊? tempbuf = WriteLength % 512; if( tempbuf == 0 ) { tempBuf = WriteLength/512;} else { tempBuf = (WriteLength/512) +1;} for(i =0;i < tempBuf; i++) { for(j = 0; j< 512; j++) { Buf[j] = ~Buf[j]; } Buf += 512 } 是不是我这里处理错误了啊》? |
|
6楼#
发布于:2005-06-08 12:27
我说的就是64K以后的数据未加密的情况啊,跟你说的完全一样。
我以前用过单字节去反的加密方法,处理任意长度的文件都没有问题,而采用其它的加密算法的时候出现了你说的情况,后来将加密长度变为固定的512字节,才解决的问题,所以你的问题可能还不完全在于加密长度本身,再仔细的看看程序吧。下面是我用RC4算法进行的缓冲区处理: #define FILE_BUFFER 512 int i; int BlockLength; unsigned char* BlockData = NULL; int NumofBlock = len / FILE_BUFFER; if((len % FILE_BUFFER) != 0) NumofBlock++; for(i = 0 ; i < NumofBlock; i++){ if(i == NumofBlock - 1) BlockLength = len - i*FILE_BUFFER; else BlockLength = FILE_BUFFER; BlockData = (unsigned char*)ExAllocatePool(NonPagedPool, BlockLength); RtlZeroMemory(BlockData, BlockLength); RtlCopyMemory(BlockData, &indata[i*FILE_BUFFER], BlockLength); RC4_set_key(&key, keylen, keys); RC4(&key, BlockLength, BlockData, BlockData); RtlCopyMemory(&indata[i*FILE_BUFFER], BlockData, BlockLength); ExFreePool(BlockData); |
|
7楼#
发布于:2005-06-19 11:18
多谢各位大哥的回复,这个长度的问题解决了
|
|
8楼#
发布于:2005-06-20 11:26
|
|
9楼#
发布于:2005-06-20 11:35
Hell_Fire_1981:
我上周回学校毕业答辩了。你现在做到什么程度了? 我看你用DES,是说你已经可以改变文件大小了??? |
|
10楼#
发布于:2005-06-20 15:54
下面是引用zhjie374于2005-06-20 11:35发表的: DES加密也是等长的 |
|
|
11楼#
发布于:2005-06-20 16:13
DES 加密会改变文件的程度吗???
我看之前VCMFC等老大的帖子不是说DES加密不会改变文件大小的啊!! 我现在做到磁盘级目录的加密和解密,但是还是有问题, 还没有成功呢。 (主要是应为DOC文档处理不成功!)。 对了你有DES加密的源代码吗??? 给我传一份吧!嘿嘿 谢谢了 |
|
12楼#
发布于:2005-06-20 16:55
我也没呀。如果是等长的。我也可以考虑一下
|
|
13楼#
发布于:2005-06-21 15:35
DES是等长的,我的数据库的口令就是用DES 128加密的,当然是在ring3下作的,其实算法无所谓ring 0还是ring 3。而且DES算法网上满街都是,搜一下就可以了
|
|
|