lsxredrain
驱动中牛
驱动中牛
  • 注册日期2006-08-31
  • 最后登录2008-10-18
  • 粉丝1
  • 关注0
  • 积分540分
  • 威望421点
  • 贡献值1点
  • 好评度420点
  • 原创分4分
  • 专家分0分
阅读:2096回复:13

文件水印算法设想

楼主#
更多 发布于:2007-02-01 11:10
  用过滤噪音的方法来设置加密标识
如果把原始文件看作是噪音信号,把加密标记文件看成是正常的标识信号
加密时把两个信号合成在一起,
解密时首先把噪音信号过滤掉,看是否能得到标识信号,
如果能得到基本准确的标识信号,那就把标识信号去掉,取得噪音信号,
这样一来就不需要改变文件长度,也不需要做标识文件了
不知哪位大虾有这方面比较好的算法??
lsxredrain
驱动中牛
驱动中牛
  • 注册日期2006-08-31
  • 最后登录2008-10-18
  • 粉丝1
  • 关注0
  • 积分540分
  • 威望421点
  • 贡献值1点
  • 好评度420点
  • 原创分4分
  • 专家分0分
沙发#
发布于:2007-02-01 11:26
一个最简单的算法,假设文件长度大于1K
那么每四个字节一组,那么就可以得到256个组,
这样奇数组为偶数组的进位组,然后在每个偶数组上加一个很大的数,
如果偶数组有进位就加到前面的奇数组(如果奇数组万一加一也会进位就换一种算法)上,
这样解密时就可以比较偶数组是不是都大于某一个大数来判断是否是被加密过的.
lsxredrain
驱动中牛
驱动中牛
  • 注册日期2006-08-31
  • 最后登录2008-10-18
  • 粉丝1
  • 关注0
  • 积分540分
  • 威望421点
  • 贡献值1点
  • 好评度420点
  • 原创分4分
  • 专家分0分
板凳#
发布于:2007-02-01 11:43
设想2 利用3的倍数特征来做
经过逐个比较之后发现,
0-F这16个数乘3之后,补进位0,1,2之后,有且只有一个是3的倍数
lsxredrain
驱动中牛
驱动中牛
  • 注册日期2006-08-31
  • 最后登录2008-10-18
  • 粉丝1
  • 关注0
  • 积分540分
  • 威望421点
  • 贡献值1点
  • 好评度420点
  • 原创分4分
  • 专家分0分
地板#
发布于: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%以上的的标识偶数组都符合条件,则判定为已经加密的文件,加密标识随着文件的修改动态修改
magichere
驱动小牛
驱动小牛
  • 注册日期2007-01-24
  • 最后登录2008-05-07
  • 粉丝0
  • 关注0
  • 积分1000分
  • 威望137点
  • 贡献值0点
  • 好评度136点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2007-02-06 11:44
弓虽 
创造美好的未来生活!!!
lsxredrain
驱动中牛
驱动中牛
  • 注册日期2006-08-31
  • 最后登录2008-10-18
  • 粉丝1
  • 关注0
  • 积分540分
  • 威望421点
  • 贡献值1点
  • 好评度420点
  • 原创分4分
  • 专家分0分
5楼#
发布于:2007-02-06 11:53
研究了几天文件水印方法,发现是一条死胡同,它基本上是不可逆的
不过内存压缩算法似乎是可行的方案,
如果把1k压缩成0.8k,那么就有0.2k用来存放加密标识,
lzw算法在0.2k以上的压缩比率基本都是可以满足这个要求的
xikug
驱动小牛
驱动小牛
  • 注册日期2001-09-25
  • 最后登录2013-09-27
  • 粉丝1
  • 关注0
  • 积分1001分
  • 威望169点
  • 贡献值0点
  • 好评度168点
  • 原创分1分
  • 专家分0分
6楼#
发布于:2007-02-06 13:00
引用第5楼lsxredrain2007-02-06 11:53发表的“”:
研究了几天文件水印方法,发现是一条死胡同,它基本上是不可逆的
不过内存压缩算法似乎是可行的方案,
如果把1k压缩成0.8k,那么就有0.2k用来存放加密标识,
lzw算法在0.2k以上的压缩比率基本都是可以满足这个要求的

如果文件数据本来就是经过压缩的呢?如rar,zip,jpg
http://www.debugman.com
lsxredrain
驱动中牛
驱动中牛
  • 注册日期2006-08-31
  • 最后登录2008-10-18
  • 粉丝1
  • 关注0
  • 积分540分
  • 威望421点
  • 贡献值1点
  • 好评度420点
  • 原创分4分
  • 专家分0分
7楼#
发布于:2007-02-06 13:19
WinZip 9.0 包含了先进的“真空”(enhanced deflate)压缩算法,可以进一步的提高压缩比率和打包后的Zip文件大小,为你节省 ... 比采用AES加密算法的文件还大。enhanced deflate真空压缩算法真是厉害啊。最后我们用WinZip 8.1的最大压缩比率压缩了一次,
这种压缩算法压缩率可以对目前几乎所有的文件进行进一步压缩,不过现在还没有找到用c语言实现的算法,
lsxredrain
驱动中牛
驱动中牛
  • 注册日期2006-08-31
  • 最后登录2008-10-18
  • 粉丝1
  • 关注0
  • 积分540分
  • 威望421点
  • 贡献值1点
  • 好评度420点
  • 原创分4分
  • 专家分0分
8楼#
发布于:2007-02-08 11:25
在7-zip中找到LZMA的c语言算法,经过测试发现,压缩比率比.rar,.gif等文件压缩比率要高,因此对绝大部分文件用这个方法加入解密标记的,如果结合文件名缓存技术,可以解决我们平常碰到的99%以上的问题,还有1%的问题就用原来tooflat的方法解决
附件中是 ANSI-C写的LZMA算法,有兴趣的大侠一起把它改造成在ifs下也可以编译的??
附件名称/大小 下载次数 最后更新
LZMA_C.rar (20KB)  41 2007-02-08 11:25
geland
驱动牛犊
驱动牛犊
  • 注册日期2003-12-28
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分25分
  • 威望251点
  • 贡献值0点
  • 好评度54点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2007-02-08 11:54
可能还有几个问题要考虑吧,一个是效率问题,另一个是假设原来的数据同样采用这种压缩算法的时候碰到的问题
lsxredrain
驱动中牛
驱动中牛
  • 注册日期2006-08-31
  • 最后登录2008-10-18
  • 粉丝1
  • 关注0
  • 积分540分
  • 威望421点
  • 贡献值1点
  • 好评度420点
  • 原创分4分
  • 专家分0分
10楼#
发布于:2007-02-08 13:11
只是对文件开始的1k左右的字节压缩是不太用考虑效率问题,并且这种算法效率也是相当高的,假设原来的数据也是用这种算法或者压缩失败(压缩后没有变小),就用其他方法处理(如tooflat大俠的标识文件方法处理,文件列表方法等),这样一来大大减少与其他软件(如杀毒软件)发生冲突的概率.
另外,需要做一个文件名压缩缓存池(就是一种类似长文件名缩写,用4-5个字节保存一个长文件名)把所有已经确认是加密文件并打开的文件名存起来.
ps:附件中的文件在ifs下直接编译就可以用的
lsxredrain
驱动中牛
驱动中牛
  • 注册日期2006-08-31
  • 最后登录2008-10-18
  • 粉丝1
  • 关注0
  • 积分540分
  • 威望421点
  • 贡献值1点
  • 好评度420点
  • 原创分4分
  • 专家分0分
11楼#
发布于:2007-02-12 18:35
http://bbs.driverdevelop.com/htm_data/39/0701/98864.html
结合上面帖子,
顺利搞定文件头压缩法加密标记!!  
sharkmouse
禁止发言
禁止发言
  • 注册日期2003-05-05
  • 最后登录2016-04-11
  • 粉丝0
  • 关注0
  • 积分1355分
  • 威望7163点
  • 贡献值1点
  • 好评度24点
  • 原创分0分
  • 专家分0分
12楼#
发布于:2007-02-19 18:41
用户被禁言,该主题自动屏蔽!
fazwh
驱动牛犊
驱动牛犊
  • 注册日期2005-09-11
  • 最后登录2025-04-03
  • 粉丝0
  • 关注0
  • 积分32分
  • 威望303点
  • 贡献值0点
  • 好评度48点
  • 原创分0分
  • 专家分0分
  • 社区居民
13楼#
发布于:2007-02-24 18:45
好思路!
什么叫调谐?
就是将原始信息加上基频信息进行混和。
什么叫解调?
就是将混和信号减去基频信息。
现在要得到基频信号,难。
游客

返回顶部