阅读:2095回复:13
文件水印算法设想
用过滤噪音的方法来设置加密标识
如果把原始文件看作是噪音信号,把加密标记文件看成是正常的标识信号 加密时把两个信号合成在一起, 解密时首先把噪音信号过滤掉,看是否能得到标识信号, 如果能得到基本准确的标识信号,那就把标识信号去掉,取得噪音信号, 这样一来就不需要改变文件长度,也不需要做标识文件了 不知哪位大虾有这方面比较好的算法?? |
|
沙发#
发布于:2007-02-01 11:26
一个最简单的算法,假设文件长度大于1K
那么每四个字节一组,那么就可以得到256个组, 这样奇数组为偶数组的进位组,然后在每个偶数组上加一个很大的数, 如果偶数组有进位就加到前面的奇数组(如果奇数组万一加一也会进位就换一种算法)上, 这样解密时就可以比较偶数组是不是都大于某一个大数来判断是否是被加密过的. |
|
板凳#
发布于:2007-02-01 11:43
设想2 利用3的倍数特征来做
经过逐个比较之后发现, 0-F这16个数乘3之后,补进位0,1,2之后,有且只有一个是3的倍数 |
|
地板#
发布于:2007-02-01 13:35
算法实现
假设奇数组为 X,偶数组为 Y,进位为Z a 首先判断是否为加密文件 读取加密标识 1 如果 X <(FFFF FFFF FFFF FFFF ) 则判断Y >=FFFF FFFF FFFF FFFE 则没有进位, Y=Y-FFFF FFFF FFFF FFFE 否则 Y=Y+1 0000 0000 0000 0000 - FFFF FFFF FFFF FFFE 如果X == FFFF FFFF FFFF FFFF 则先不做判断,根据其他标识组来判断这个文件是否为加密文件可能性来决定后面的 Y是否为标识组 b 如果不是已经加密文件并且需要加密 增加加密标识 1 如果 X ==FFFF FFFF FFFF FFFF 则后面的那个偶数组不加加密标识 2 偶数组为 Y ,如果需要加加密标识, Y =Y+ FFFF FFFF FFFF FFFE, 如果进位为Z,则X=X+Z (Z=0或者1) 如果99%以上的的标识偶数组都符合条件,则判定为已经加密的文件,加密标识随着文件的修改动态修改 |
|
地下室#
发布于:2007-02-06 11:44
弓虽
|
|
|
5楼#
发布于:2007-02-06 11:53
研究了几天文件水印方法,发现是一条死胡同,它基本上是不可逆的
不过内存压缩算法似乎是可行的方案, 如果把1k压缩成0.8k,那么就有0.2k用来存放加密标识, lzw算法在0.2k以上的压缩比率基本都是可以满足这个要求的 |
|
6楼#
发布于:2007-02-06 13:00
引用第5楼lsxredrain于2007-02-06 11:53发表的“”: 如果文件数据本来就是经过压缩的呢?如rar,zip,jpg |
|
|
7楼#
发布于:2007-02-06 13:19
WinZip 9.0 包含了先进的“真空”(enhanced deflate)压缩算法,可以进一步的提高压缩比率和打包后的Zip文件大小,为你节省 ... 比采用AES加密算法的文件还大。enhanced deflate真空压缩算法真是厉害啊。最后我们用WinZip 8.1的最大压缩比率压缩了一次,
这种压缩算法压缩率可以对目前几乎所有的文件进行进一步压缩,不过现在还没有找到用c语言实现的算法, |
|
8楼#
发布于:2007-02-08 11:25
在7-zip中找到LZMA的c语言算法,经过测试发现,压缩比率比.rar,.gif等文件压缩比率要高,因此对绝大部分文件用这个方法加入解密标记的,如果结合文件名缓存技术,可以解决我们平常碰到的99%以上的问题,还有1%的问题就用原来tooflat的方法解决
附件中是 ANSI-C写的LZMA算法,有兴趣的大侠一起把它改造成在ifs下也可以编译的?? |
|
|
9楼#
发布于:2007-02-08 11:54
可能还有几个问题要考虑吧,一个是效率问题,另一个是假设原来的数据同样采用这种压缩算法的时候碰到的问题
|
|
10楼#
发布于:2007-02-08 13:11
只是对文件开始的1k左右的字节压缩是不太用考虑效率问题,并且这种算法效率也是相当高的,假设原来的数据也是用这种算法或者压缩失败(压缩后没有变小),就用其他方法处理(如tooflat大俠的标识文件方法处理,文件列表方法等),这样一来大大减少与其他软件(如杀毒软件)发生冲突的概率.
另外,需要做一个文件名压缩缓存池(就是一种类似长文件名缩写,用4-5个字节保存一个长文件名)把所有已经确认是加密文件并打开的文件名存起来. ps:附件中的文件在ifs下直接编译就可以用的 |
|
11楼#
发布于:2007-02-12 18:35
|
|
12楼#
发布于:2007-02-19 18:41
用户被禁言,该主题自动屏蔽! |
|
13楼#
发布于:2007-02-24 18:45
好思路!
什么叫调谐? 就是将原始信息加上基频信息进行混和。 什么叫解调? 就是将混和信号减去基频信息。 现在要得到基频信号,难。 |
|