加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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()));
        }
    }

}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读