目录
正文
前文的两次打包已经获得了我们想要的AB包和索引关系文件,接下来就要考虑加密的问题了。
疑问:为何要把AB包和索引关系Asset加密,先给大家看两张图
![](https://i-blog.csdnimg.cn/blog_migrate/b9c4c85b15334794e494e89f131bd9db.png)
![](https://i-blog.csdnimg.cn/blog_migrate/c4027b972d9da3a27efc683f6bbd0dd4.png)
解答:使用资源查看工具时可以查看未加密的AB包资源的,上面两张图就是使用AssetStudioGUI工具查看我这个测试工程的AB包。对于企业项目来说有很多资源是需要保密的,比如下个版本的角色或建筑会提前进包,被用户提前看到就不好了。因此AB包加密也是很有必要的一件事
下面开始给AB包加密的工作
首先,AB包是什么文件?AB包是一段二进制数据,用于给Unity识别的一段数据,既然是数据,那当然可以改写它了。下面是读取AB包文件的代码
//File.OpenWriteAPI打开该AB文件,并使用fs.WriteAPI重写该文件
using (var fs = File.OpenWrite(srcPath))
{
byte[] content = File.ReadAllBytes(srcPath);
//
//拿到二进制数据后,就在这做一些小事情
//
fs.Write(buffer, 0, len);
}
能读到这个AB包,就可以拿到它的Byte[]数据,哪怕是往包头前面随便插入一个byte数据,都可以起到加密作用,只不过这样加密很容易被发现解密方法。比较简单的做法是,根据AB包名或hash生成一个二进制key,插入到AB包数据前面,既可以做到不重复,又可以很容易反推这个key。