阅读:1418回复:7
做过加密的兄弟:你们如何判断当前文件需要被解密?
例如一个目录下,既有明文也有密文。在解密的时候如何来判断它是明文(不需要解密)还是密文(需要解密)。
如果我在文件开头加几个字符作为暗号,这样改变了文件的大小,比较危险。 你们是怎么做的???? 谢谢 |
|
沙发#
发布于:2005-06-02 12:10
老兄,帮我解决下好吗?解决不了,日子好难受啊
我根据 http://www.driverdevelop.com/forum/html_90057.html?1117634851 做了如下代码: case IRP_MJ_INTERNAL_DEVICE_CONTROL: //case IRP_MJ_SCSI: // peter add CurSrb = ExAllocatePoolWithTag(NonPagedPool, sizeof(SCSI_REQUEST_BLOCK), DISK_TAG_SRB); if (CurSrb == NULL) { DBGOUT((\"no\")); }else{ DBGOUT((\"ok\")); } RtlZeroMemory(CurSrb, SCSI_REQUEST_BLOCK_SIZE); CurSrb=irpSp->Parameters.Scsi.Srb; cdb = (PCDB)CurSrb->Cdb; opCode=cdb->CDB6GENERIC.OperationCode; if(opCode==SCSIOP_MODE_SENSE && CurSrb->DataBuffer && CurSrb->DataTransferLength >= sizeof(MODE_PARAMETER_HEADER) ) { DBGOUT((\"test\")); modeData = (PMODE_PARAMETER_HEADER)CurSrb->DataBuffer; modeData->DeviceSpecificParameter|=MODE_DSP_WRITE_PROTECT; } DBGOUT((\"OperationCode1 (%x)\", cdb->CDB6GENERIC.OperationCode )); // peter add end 问题是 cdb->CDB6GENERIC.OperationCode 的植始终是 0,进不了if 里面,正确情况是1a ,请指点为什么? |
|
板凳#
发布于:2005-06-02 13:14
你确定你的驱动已经成功加载?
应该是你USB设备的LOWERFILTER. 如果不是,当然拦截不到SCSI |
|
地板#
发布于:2005-06-02 13:44
已经加载了,并且是LOWERFILTER层(做了Dbgview.exe看到的) 我看到开始出现的信息 出现的 opCode 值 (56) ,(30),(6C) ,每次出现的不确定,奇怪 . |
|
地下室#
发布于:2005-06-02 13:46
老兄,您的qq或者msn是多少,已经好几天了没有搞定,实在很难受.
|
|
5楼#
发布于:2005-06-02 14:16
48118700
|
|
6楼#
发布于:2005-06-03 15:08
例如一个目录下,既有明文也有密文。在解密的时候如何来判断它是明文(不需要解密)还是密文(需要解密)。 我认为,要不改变文件大小,最好的方法是改变文件名字。 让你加密过的文件有统一的后缀,而且为了解密能还原,该名字应该包含原文件名的信息。。。。。但这样做是建立在用户不更改文件名的前提下,也不是很好。 其实加个文件头是最好的方法,没什么危险啊~~~ |
|
7楼#
发布于:2005-06-03 15:41
在文件开头加东西你觉得不危险吗?
LENGTH和OFFSET都要重新计算的呀,容易丢字节吧。 |
|