Unity | AssetBundle資源包的加密與解密(AES加密)

一、愷撒加密可以點擊進行學習;

二、AES加密:

    private static string KEY = "123456_abcdeABCD";
    private static string IV = "123456_abcdeABCD";
    private IEnumerator AES_EncryptionAB()
    {
        WWW www = new WWW("file:///" + Application.dataPath + "/../BuildAssetBundle\\Window\\myab");
        yield return www;
        if (www.isDone)
        {
            if (www.error == null)
            {
                byte[] bytes = www.bytes;
                byte[] key = Encoding.UTF8.GetBytes(KEY);
                byte[] iv = Encoding.UTF8.GetBytes(IV);

                Aes aes = Aes.Create();
                MemoryStream memoryStream = new MemoryStream();
                CryptoStream cryptoStream = new CryptoStream(memoryStream, aes.CreateEncryptor(key, iv), CryptoStreamMode.Write);
                cryptoStream.Write(bytes, 0, bytes.Length);
                cryptoStream.FlushFinalBlock();
              
                
                File.WriteAllBytes(Application.dataPath + "/../BuildAssetBundle\\Window\\myab_AES_Encryption.assetbundle", memoryStream.ToArray());
            }
        }
    }

三、AES解密:

    private IEnumerator AES_DncryptionAB()
    {
        WWW www = new WWW("file:///" + Application.dataPath + "/../BuildAssetBundle\\Window\\myab_AES_Encryption.assetbundle");
        yield return www;
        if (www.isDone)
        {
            if (www.error == null)
            {
                byte[] bytes = www.bytes;
                byte[] key = Encoding.UTF8.GetBytes(KEY);
                byte[] iv = Encoding.UTF8.GetBytes(IV);

                Aes aes = Aes.Create();
                MemoryStream memoryStream = new MemoryStream();
                CryptoStream cryptoStream = new CryptoStream(memoryStream, aes.CreateDecryptor(key, iv), CryptoStreamMode.Write);
                cryptoStream.Write(bytes, 0, bytes.Length);
                cryptoStream.FlushFinalBlock();


                AssetBundle ab = AssetBundle.LoadFromMemory(memoryStream.ToArray());
                GameObject go = ab.LoadAsset("Sphere") as GameObject;
                Instantiate(go, Vector3.zero, Quaternion.identity);
                ab.Unload(false);
            }
        }
    }

四、資源鏈接:https://download.csdn.net/download/weixin_39766005/12104160

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章