Bundle加密防止AssetStudio获取资源

做过Unity bundle资源的同学都知道AssetStudio可以轻易的的破解bundle获取到项目里的原始资源,为了防止自己的项目资源被人使用AssetStudio轻易的获取到,上网研究了下可行的Bundle加密方案,总结有以下两种方式:

1.使用位的异或运算bundle的字节码去加解密,普及下为什么位的异或运算可以实现加解密,因为1 ^ 0 = 1;0 ^ 0 = 0;所以x ^ 0 = x 可实现数据的保持, 位运算中的异或运算满足交换律,所以B ^ A ^ A = B ^ 0 = B,所以在bundle资源打完之后读取bundle的字节数据去异或你的密钥生成加密过后的文件,在加载bundle的时候先读取加密过后的文件的字节数据再去异或一次你的密钥得到原始的bundle字节数据,再使用 AssetBundle.LoadFromMemory(byte[] binary)加载出对应的bundle,此方案是可以实现bundle的加解密,但是上线的项目要考虑性能的问题,该方案在内存性能方面不能满足要求,所以实际线上项目一般不使用该方案

2.还是读取打完bundle的字节数据,然后重新创建对应的文件在头部先写入一段加密的字节数据,再加入bundle的字节数据,在加载bundle的时候使用AssetBundle.LoadFromFile(string path, uint crc, ulong offset) 接口传入你加密的字节数据的长度为offset,也可以加载出对应的bundle,该方案在性能方面基本上没啥另外的消耗,也是本人最终使用的方案。下面贴出对应的加密代码,有兴趣的可以参考借鉴。

[MenuItem("Tools/Encode Bun
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值