最近写了一个小的管理软件,在初始页LOGO里加入了视频,这里正好由于公司做图形这块,于是这里就牵涉到了这个视频文件的保密问题, 其实也没什么,但是这个小文件虽然简单,但也不能让他们自己拿出去做广告吧,因为是免费提供给他们的.这里讨论一下文件的保密,希望有兴趣的朋友一起来讨论一下.
先看一下软件的界面吧:
虽然这个软件不大,但是却是一个人完成,累啊!
对于开头的LOG,本来我是打算直接加到软件资源里,然后再读出,可是无奈,视频文件读出并播放不怎么了解,写不出来,这里希望写过这方面的东西的朋友介绍一下,个人觉得,把文件写到资源里,然后直接在资源里读出来不妨为一个保密的好方法,当然,需要用UPX等软件压缩并加密一下,这样,资源就不会被别人读取并改写.
舍弃了这种绝好的方法,我只好用了另一种方面,读取磁盘上的文件,但是如果文件直接存放在磁盘上,那别人很容易就拿走了,那就没有效果了.
所以,有了下面的方法,把16制文件工具,比如HEDIT,UltraEdit等软件打开视频文件, 在其中添加一些位,我用的就是在文件头部加入10位无效字符,这样,视频文件头被破坏了,自然直接打开该文件就播放不起来,
在打开程序时,先对该文件进行处理,把其中添加的位数再去掉,然后写成新文件,这样就可以播放了.
比如如下代码:
CFile file,nfile;
if(file.Open("data/tou.pfw",CFile::modeReadWrite
|CFile::typeBinary)==NULL)//开被破坏过的文件
{
MessageBox("未找到视频文件!","错误",MB_OK|MB_ICONERROR);
return;
}
nfile.Open(path,CFile::modeCreate|CFile::modeReadWrite
|CFile::typeBinary);
file.Seek(8,CFile::begin);//假设是添加了8个字节的破坏码,这里要让出来,就是前8位不读取
char t[1024]={0}; //由于生次读取的大小太大会影响电脑性能,这里每次读取1k
int n=0;
while(1)//循环写入
{
file.Seek(8+1024*n,CFile::begin);
nfile.Seek(1024*n,CFile::begin);
file.Read(t,1024);
nfile.Write(t,1024);
n++;
if((n*1024+1)>3197441)
break;
}
file.Close();
nfile.Close();
这样,一个新的没有破坏的文件就形成了.
还有一种方法跟这个大同小异,就是把文件读到资源里,当然也是破坏一下,然后在运行时写到磁盘里,再读取播放.
这里,还是希望对资源进行读写的高手能展示一下直接读取资源并播放的方法.
本文地址:http://com.8s8s.com/it/it81.htm