`

通过ByteArray加密SWF或图像

阅读更多

不知道有没有人发过类似的文章,希望能听到大家的想法

假如你有一个SWF或者图像文件,别人即使下载下来了,也不能获得其中的内容,那么ByteArray或许能帮一下忙。

原理:

假设要加密的文件是a.swf,首先通过AS3修改a.swf的ByteArray,然后发送到PHP(当然也可以是其他语言),在后台生成一个新的 b.swf,这就是加密后的文件,别人如果下载下来打开,是无法观看的。如果想通过破解工具破解,那也是徒劳(因为这已经不是一个swf了)。

然后我们就可以在AS3里解析这个b.swf,将它还原成a.swf,这是通过URLLoader+Loader完成的,还是来看看代码吧

var urlLoader:URLLoader = new URLLoader();
urlLoader.dataFormat = URLLoaderDataFormat.BINARY;
urlLoader.addEventListener(Event.COMPLETE,onLoaded);
urlLoader.load(new URLRequest('t1.swf'));
function onLoaded(evt)
{
    var ba:ByteArray = urlLoader.data;
    var bytes:ByteArray = new ByteArray();
    for(var i=0;i<ba.length;i++)
    {
        bytes.writeByte(ba[i] + 13);//这里的13可替换为你想要的数字
    }
    //bytes.compress();
    var request:URLRequest = new URLRequest ('http://127.0.0.1/today/t.php');
    var loader: URLLoader = new URLLoader();
    request.contentType = 'application/octet-stream';
    request.method = URLRequestMethod.POST;
    request.data = bytes;
    loader.load( request );
}

 PHP代码:

$fp = fopen( 'test.swf', 'wb' );
fwrite( $fp, $GLOBALS[ 'HTTP_RAW_POST_DATA' ] );
fclose( $fp );

 解密:

var urlLoader:URLLoader = new URLLoader();
urlLoader.dataFormat = URLLoaderDataFormat.BINARY;
urlLoader.addEventListener(Event.COMPLETE,onLoaded);
urlLoader.load(new URLRequest('test.swf'));//加密后的swf文件
function onLoaded(evt)
{
    var ba:ByteArray = urlLoader.data;
    var bytes:ByteArray = new ByteArray();
    //trace(ba.length);
    
    //-------------------解密
    for(var i=0;i<ba.length;i++)
    {
        bytes.writeByte(ba[i] - 13);
    }
    //-------------------End
    
    var loader:Loader = new Loader();
    loader.contentLoaderInfo.addEventListener(Event.COMPLETE,onBytesLoaded);
    loader.loadBytes(bytes);
}
function onBytesLoaded(evt)
{
    addChild(evt.target.content);
}
 
分享到:
评论
1 楼 弃天笑 2011-04-25  
这样加密会不会造成字节的位的丢失,从而还原的时候会出错呢?
还有一点,这个效率怎样
如果每个swf都这样进行解密的话,效率会比较低吗?毕竟是需要循环的

相关推荐

    通过ByteArray来播放MP3

    要通过`ByteArray`播放MP3文件,我们首先需要创建一个包含MP3文件的SWF文件,然后使用`Loader.loadBytes()`方法来加载这个SWF文件。 ### 创建包含MP3的SWF文件 为了演示如何将MP3文件嵌入到SWF文件中,我们可以...

    flex byteArray to sound

    在Flex编程中,有时我们需要处理音频数据,例如从网络接收或者本地存储的字节数组(ByteArray)中读取音频信息,并将其转化为可播放的声音(Sound)。标题"flex byteArray to sound"表明我们要讨论的是如何将一个...

    char bytearray string的区别.docx

    在机器视觉应用中,数据通常是图像或视频帧,这类数据以二进制形式存在。因此,`bytearray` 或 `char`数组经常用于处理像素数据的读取、处理和传输。在Qt和C++中,可能会使用`QByteArray`或`std::vector&lt;char&gt;`来...

    Flex 与 Struts2 ByteArray 数据上传

    这可能意味着ByteArray数据包含了身份证的扫描件或图像,Flex客户端可能有一个功能用于读取身份证,然后将这些信息转换为ByteArray进行上传。 综上所述,这个知识点涵盖了Flex客户端与Struts2服务端的交互,特别是...

    ByteArray-Scale-Bitmap.rar_ByteArray_slice

    通过将Bitmap转换为ByteArray,我们可以更有效地进行位图的缩放、裁剪等操作,尤其是在处理大量或大尺寸图片时,可以降低内存消耗。 实现9-slice Bitmap的ByteArray缩放过程通常包括以下步骤: 1. **Bitmap到...

    PNG加密解密工具是什么?加密代码演示.docx

    # PNG加密解密工具 此工具可以加密和解密PNG图片,保护您的隐私。 ## 加密 1. 选择要加密的PNG图片。 ...3. 点击“加密”按钮。...4. 保存加密后的PNG图片。...请注意,如果您忘记了密码,... encrypted_pixels = bytearray()

    byteArray的妙用Chapter 1 - The first bits

    1. 文件类型识别:许多文件类型的标识信息都存储在文件的开头几个字节中,如JPEG图像的魔数(0xFF, 0xD8)或PNG图像的魔数(0x89, 0x50, 0x4E, 0x47)。通过读取并分析byteArray的初始部分,我们可以快速识别文件...

    ForcibleLoader.as 将加载的version 9以下的swf转换成version 9以上的swf

    这样,我们可以先将低版本SWF的二进制内容读取到`ByteArray` 对象中,然后使用`loadBytes()` 加载这个`ByteArray`。 接下来,为了使低版本SWF的行为符合AS3环境,`ForcibleLoader` 可能会修改加载的SWF头部信息,将...

    FLASH 文件加密

    代码片段中出现了一个简单的加密函数`compress`,该函数通过遍历传入的`ByteArray`(字节数组),并将其与一个固定的字符串`key`中的字符ASCII值相加,从而实现了简单的加密过程。这种加密方式相对简单,主要是为了...

    AES加密算法在java,AS,JS中的实现_密码等的加密互解

    接着,使用Cipher类进行加密和解密操作,通过init方法设置工作模式(如ECB、CBC等)和密钥,最后调用doFinal方法处理数据。示例代码如下: ```java import javax.crypto.Cipher; import javax.crypto.KeyGenerator;...

    ACT_GE_BYTEARRAY.sql

    项目的数据库

    DES和RSA加密算法不写程序代码的加密方案

    综上所述,通过在VB6中创建包含DES和RSA两种加密算法的ActiveX控件,不仅能够有效简化加密功能的开发过程,还能提高数据的安全性和应用程序的整体质量。这种方法特别适用于那些希望快速集成加密功能而不必深入了解...

    加密解密Base64的js封装代码

    在JavaScript中,Base64的加密和解密是通过特定的库或者自定义函数实现的。本文将深入探讨Base64编码原理,JavaScript中的实现方式,以及如何封装一个Base64的加密解密工具。 Base64编码的基本原理是将每3个字节...

    flex 上传图像

    这可以通过从本地文件、相机输入或其他来源获取图像来完成。 ```actionscript var bitmapData:BitmapData = new BitmapData(image.width, image.height, false, 0); bitmapData.draw(image); ``` 这里的`image`...

    java 加密解密压缩包zip代码-as3

    收到服务器返回的加密或解密后的ZIP数据后,可以使用AS3的`ByteArray`类进行进一步处理,如保存到本地或展示给用户。 为了提高安全性,还可以考虑使用HTTPS协议进行通信,以保护数据在传输过程中的安全。同时,密钥...

    ByteArray.js:等效于ActionScript 3的ByteArray for Javascript,支持AMF0和AMF3

    数据与ByteArray字节流共享,从而允许您通过调用ByteArray的构造函数来直接进行处理,这非常方便。 十进制值 该库还支持IEEE 754值,以防您需要使某些对象浮点数。 压缩和解压缩 ByteArray.js可以满足您的要求! ...

    PNGEncoder,JPEGEncoder图像编码

    通过PNGEncoder、JPEGEncoder对bitmapdata进行encode转换为对应图像格式的bytearray,这时会根据对应图像格式的压缩算法转换为编码图像的bytearray,如JPEGEncoder 类使用联合图像专家组 (JPEG) 压缩将原始的位图...

    md5加密源码

    ### MD5加密技术详解 MD5(Message-Digest Algorithm 5)是一种广泛使用的散列算法,主要用于数据完整性检查。在网络安全、密码存储、文件校验等领域有着不可替代的作用。其核心功能是将任意长度的数据输入转化为一...

    MD5加密测试_java类

    使用MD5对字符进行加密处理。 public MD5Test(String inStr1) { this.inStr = inStr1; try { this.mad5 = MessageDigest.getInstance("MD5"); } catch (Exception ex) { System.out.println(ex.toString...

    一个基于C# 实现的Image与Byte Array进行相互转换的Class类库源码及例子程序

    - 打开或创建图像文件,加载到 `Image` 对象。 - 创建一个 `MemoryStream` 对象,用于存储图像的字节流。 - 使用 `Image` 对象的 `Save` 方法将图像保存到 `MemoryStream`,指定保存的格式,如JPEG、PNG等。 - ...

Global site tag (gtag.js) - Google Analytics