Unity项目开发中如何做资源加密

Unity的游戏很容易被人反编译出来,然后再重新打包发布,把自己辛辛苦苦开发的游戏,抄写的一丝不挂。很多项目要求要做好资源加密,Unity中如何做好资源加密呢?本文給大家分享加密算法+资源打包整合思路:

  1. 游戏资源加密如何选择加密算法;
  2. Assetsbundle资源包的加密与解密;

游戏资源包如何选择加密算法

游戏资源包加密的第一件事情就是选一个什么样的加密/解密算法,比较不容易被人破解。我们如何来选择呢?很遗憾的告诉大家,没有任何一个保险的加密解密算法是安全的。杠精第一时间就会来反驳,这怎么可能,我加密了他怎么破解?游戏资源加密注定了加密算法不能用太耗时的加密算法。接下来我们来看下不同加密算法是如何被破解的。

  1. 使用标准库实现的加密解密算法,比如使用encrypt加密/解密算法。这里有个问题,我们会有一个密钥用来解密,密钥一般游戏都写死到代码里。这种破解太简单了,密钥写死在代码里,基本都是字符串等,静态分析代码找到密钥对应的字符串,有了密钥,你用的是标准库,一下加密资源就破解了,分分钟你的资源就被破解了。

  1. 使用自己实现的加密解密算法,比如,采用二进制亦或来做加密解密,比如,加密定一个二进制掩码mask, 让每个字节都异或这个mask,得到一个新的数据,这样资源就不能被直接识别出来,使用资源得时候,再把加密数据异或一次mask在解密回来到项目中使用。这种破解稍微蛮烦写,需要自己反编译你的解密代码,同时还要找到你的解密密钥key。但是本质也比较容易破解。

加密/解密算法示意如下:

所有从上面分析来看想要不被破解,几乎是很难,就看破解的代价。你这个游戏是否值得。一般我们的目标就是不要让人通过Unity反编译工具就能直接让我们的游戏直接反编译出Unity项目工程,然后重新编译打包发布就可以了。解密算法要快,注定他不会太复杂,密钥单一的放客户端或是网络,注定能获取到。

Assetsbundle资源包的加密与解密

分析完加密解密算法以后,接下来我们就来看下如何加密我们的资源,先来介绍第一种方案,打资源包的时候,加密单个的资源, 把加密后的数据打入到资源包。解密的时候,从ab包中读取资源,然后再把资源包里的内容解密开来。具体做法如下:

  1. 新建一个类,继承自FileStream, 重写Read/Write函数。代码如下:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值