我正在尝试在Adobe AIR中创建视频播放器。我想对视频文件进行加密,以使它们无法在播放器外部共享。我不想跳过创建一个坚如磐石的系统,而是简单地阻止了90%至95%的用户共享内容。

我在File Protection in Adobe AIR (Flex)遇到了有关SO的相关问题

但是,由于视频文件的大小肯定会超过10 MB,因此上述方法似乎不是解决方案。

有很多解决方案来加密文本字符串,但我还没有找到任何可以加密文件的解决方案。任何帮助或指示,将不胜感激。

非常感谢。

更新:我们正在尝试通过以下方式实现这一目标:


加密/混杂视频文件的前50个二进制字符并存储在硬盘驱动器上。这使文件无法播放。
在运行时解密前50个字符以获取原始文件,并将其复制到硬盘驱动器上的temp文件夹中。
退出时,删除解密的文件并清空temp文件夹。


这解决了我们的大多数问题。它不允许通过简单的复制和粘贴进行共享。是一个简单的解决方案,尽管可能不是很优雅。

我们现在面临的问题是临时文件夹没有被清空。文件落在回收站中,可以从那里轻松恢复!

最佳答案

我为DVD应用程序解决了这个问题,该应用程序对DVD中的所有资产进行加密,并在AIR应用程序内部执行HTTP Server对其进行解密。

它以这种方式工作:

1-图像,视频或资产已加密并保存在任何位置,在本例中为带主密钥的DVD资产文件夹。

2-Air应用程序包含一个非常简单的HTTP服务器,该服务器读取文件后将其解密并仅使用简单的Flash Video Player或使用<img src="localhost:5050/assetcode.jpg">这样的标签将其发送到同一Air应用程序

在air应用程序内部为文件提供服务的代码如下:

import com.hurlant.crypto.prng.ARC4;
            import com.hurlant.util.Hex;
            import com.hurlant.crypto.Crypto;
            import com.hurlant.crypto.symmetric.ICipher;

            var key:ByteArray = Hex.toArray(Hex.fromString("masterkey"));
            var rc4:ARC4 = new ARC4(key);

            var fs:FileStream = new FileStream();
            fs.open( content, FileMode.READ );
            var ba:ByteArray = new ByteArray();


            fs.readBytes( ba, 0, fs.bytesAvailable );
            ba.position = 0;
            fs.close();



            rc4.decrypt(ba);
            //cipher.decrypt(ba);

            innerSendHTML(s, ext2mime[content.extension], ba );

            ba.length = 0;


我们使用RC4算法,因为它在我们的测试中速度更快。

对于HTTP Server,我们使用了Flash Camp 2010中的示例http应用程序,您可以在google中找到它。

问候

-

www.imaginacolombia.com

10-08 04:46