簡體   English   中英

如何使用Flash加密/解密FLV

[英]How to encrypt/decrypt an FLV using Flash

我正在使用Windows應用程序(在.NET中創建),該應用程序的功能之一是使用SWF組件播放本地FLV。

現在,我需要創建一個加密應用程序以確保那些FLV不能​​自由播放,只有SWF播放器才知道如何解密該文件(使用從.NET應用程序收到的密鑰)。

我當時正在考慮創建一個Air應用程序來對我的flv(也許是ByteArray類?)進行編碼,並使用某種算法來對鍵字符串中的字符進行混洗/取消混排。

我的主要需求是如何使用Air / Flash編碼/解碼文件。 我嘗試了幾次,只是嘗試加載FLV,轉換為ByteArray,然后保存新的FLV,但是此新的FLV無法播放。 打開Notepad ++,我注意到該文件在FLV標頭之前有幾個字符。

有人知道如何正確執行此操作嗎? 謝謝!

只有SWF播放器才會知道如何解密該文件。

如果有人可以訪問SWF,則可以對其進行反編譯,並了解如何解密FLV。

更好的方法是使用AES之類的方法對它們進行加密,然后從服務器獲取密鑰。

如果您不擔心人們會反編譯您的SWF,請執行任何會導致媒體播放器無法打開它的操作。

是的,您將使用ByteArray來修改您的FLV。

關於多余的字節,您不應該“轉換”為ByteArray ,接收時它應該已經是這種格式了。 聽起來您好像以某種方式將其包含在String並且使用了writeUTF ,它會在開頭寫入長度。

這是我在經歷和谷歌搜索中取得的成就的一個示例。 完美運作。

    public function Main():void 
    {           
        us.load(new URLRequest("file.ext"))
        us.addEventListener(Event.COMPLETE, onVideoLoaded);
    } 

    private function onVideoLoaded(e:Event):void
    {
        var bytes:ByteArray = new ByteArray();  
        us.readBytes(bytes, bytes.length, us.bytesAvailable);

        bytes = encrypt(bytes);         
        saveFile(bytes);
    }

    private function saveFile(bytes:ByteArray):void
    {           
        var fileStream:FileStream = new FileStream();
        fileStream.open(File.desktopDirectory.resolvePath("filename.ext"), FileMode.WRITE);
        fileStream.writeBytes(bytes, 0, bytes.length);
        fileStream.close();

        fileStream.addEventListener(OutputProgressEvent.OUTPUT_PROGRESS, onCompleteFile);
    }


    private function encrypt(bytes:ByteArray):ByteArray 
    {
        var i:int = bytes.length;
        while (i--)
        {
            bytes[i] += 128;
        }

        return bytes;
    }

使用ROT128加密文件,更多信息在這里

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM