swf加密
发布时间:2020-12-15 17:55:53 所属栏目:百科 来源:网络整理
导读:byteArray二进制加密,此种方法不会使swf变大,只是在原有的字节流中做混淆,对闪客精灵等软件可以起到很好的防破解作用。网上又有源码可以很好地做研究。参考?加密类??http://www.fireyang.com/blog/?p=582 package util{import com.hurlant.crypto.symmetr
byteArray二进制加密,此种方法不会使swf变大,只是在原有的字节流中做混淆,对闪客精灵等软件可以起到很好的防破解作用。网上又有源码可以很好地做研究。参考?加密类??http://www.fireyang.com/blog/?p=582 package util { import com.hurlant.crypto.symmetric.AESKey; import flash.utils.ByteArray; /** * @author 黄记新,下午4:02:25 */ public class EncryptUtil { public function EncryptUtil() { } //加密函数 public static function compress(byte:ByteArray,password:String):ByteArray{ var key:String = password; //得到密文 var binKey:ByteArray = new ByteArray(); binKey.writeUTF(key); //AESKey requires binary key var aes:AESKey = new AESKey(binKey); var bytesToEncrypt:int = (byte.length & ~15);//注意:byte.length&~15。这是为了确保被加密的字节数刚好可以被16整除否则我们将不能调用aes.encrypt(). //make sure that it can be divided by 16,zero the last 4 bytes for (var i:int = 0; i < bytesToEncrypt; i += 16){ aes.encrypt(byte,i); } return byte; } //解密函数 public static function uncompress(byte:ByteArray,password:String):ByteArray{ var key:String = password; //得到密文 var binKey:ByteArray = new ByteArray(); binKey.writeUTF(key); //AES 算法需要二进制 var aes:AESKey = new AESKey(binKey); var bytesToDecrypt:int = (byte.length & ~15); //注意:byte.length&~15。这是为了确保被加密的字节数刚好可以被16整除否则我们将不能调用aes.encrypt(). for (var i:int = 0; i < bytesToDecrypt; i += 16){ aes.decrypt(byte,i); } return byte; } } } 容器重新解密示例:
package { import com.hurlant.crypto.symmetric.AESKey; import flash.display.Loader; import flash.display.Sprite; import flash.system.ApplicationDomain; import flash.system.LoaderContext; import flash.utils.ByteArray; [SWF (width = 640,height = 423)] //the dimensions should be same as the loaded swf's public class Main extends Sprite { [Embed (source = "VerletClothEn.swf",mimeType = "application/octet-stream")] // source = path to the swf you want to protect private var content:Class; private var key:String = "activetuts"; public function Main():void { var data:ByteArray = new content(); var binKey:ByteArray = new ByteArray(); binKey.writeUTF(key); //AESKey requires binary key var aes:AESKey = new AESKey(binKey); var bytesToDecrypt:int = (data.length & ~15); //make sure that it can be divided by 16,zero the last 4 bytes for (var i:int = 0; i < bytesToDecrypt; i += 16) aes.decrypt(data,i); var loader:Loader = new Loader(); addChild(loader); loader.loadBytes(data,new LoaderContext(false,new ApplicationDomain())); } } } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- 实战:解决C++ AI引擎代码仓库难以维护的问题
- yaffs文件系统在2.6内核上的移植--操作步骤(转载)
- 用于C的夹板代码分析仪
- 动态加载数据uitableview swift
- ruby-on-rails – 在heroku上部署rails app
- ruby-on-rails – rails capybara – 如何检测js点击li(不是
- swift uitableview 多选
- traincascade's error (Required leaf false alarm rat
- Jmeter阶梯压测聚合报告分阶梯汇总显示
- ios – xcodebuild -exportArchive:key“method”的export