c#如何实现加密视频文件,给个思路就行!
如题,目前项目的要求,需要对视频的课件加密。点击视频课件(任何格式均可),首先弹出来框供用户输入,输入内容提交到自己的服务器进行合法性验证,现在首要解决的是怎么能在打开视频的时候先执行是自己的程序,也即弹出输入框呢。。。?
------解决方案--------------------《.net程序中资源文件的保护办法探讨》:http://blog.csdn.net/zhoufoxcn/archive/2008/04/16/2296966.aspx
是否可以这么做?
先把视频资源加密,保证通过普通方式无法正常打开,然后再自己做一个程序,在自己做的程序里面调用视频播放控件播放解密后的视频文件?
------解决方案--------------------不要直接暴露视频地址,也不要直接把连接指向视频地址, 指向一个页面,做好你的验证处理后.再由程序转到实际资源地址去
这一般是在网络上的实现方法.
如果你要对本地文件实现这样的功能,最简单的办法是用你自己的程序包装这个课件,就是说,任何文件都用程序包装成EXE文件(就和FLASH播放器包装成EXE一样),运行后,如果密码对,就释放出真实的二进制流数据,打开.
仅仅是思路
------解决方案--------------------
根据你的实际情况,如果真的完全实现加密,的确需要自己动手做个播放器了!
directshow是首选的框架,不错,必须写一个filter!具体是写个sourcefilter呢,还是写个transformfilter呢,哪个上手快写哪个!
估计都不快,呵呵,我学了1年,才搞明白com中聚合和真正含义和目的,希望你悟性比我高!
我要说的是,不就是不让用户复制吗,下面给个思路:
1、媒体文件简单加密;
2、验证程序(含解密文件)和加密后的文件绑在一起发布给客户;
3、程序运行验证,成功则解密到一个秘密文件目录下,然后调用播放器(或者再写个窗口,把media player组件放到上面,使用media player播放)
这个能防住95%以上的人,对于专业人士,或者那些就是准备破解你的程序的人,你就算是再付出3000%的努力,他们还是有办法的!
------解决方案--------------------
很不幸,你对自己问题的判断很正确——加密视频文件本地使用的真正难点在于实时流化,而在.Net下这正确的判断必将使你走进死胡同,因为DirectShow没有给用.Net语言自定义filter留下足够的接口,非要走DirectShow这条路,回到艰难的C++语言是唯一的选择。