Unity3D 数据加密

加密主要使用 AEC 加密方式,采用 CBC 的加密模式。 AES(高级加密标准)加密,是下一代的加密算法标准,具有速度快,安全级别高等特点。在.net中,目前 AES 标准的一个实现是 Rijndael 算法。

代码如下:



using System;
using System.IO;
using System.Security.Cryptography;
using System.Text;

public class EncryptTools 
{
    private static string AES_KEY = "abc123456789asfd";  // 可以是16/24/32位
    private static string AES_IV = "gsf4jvkyhye57k8O";   

    /// <summary>
    /// AES 加密(高级加密标准,是下一代的加密算法标准,速度快,安全级别高,目前 AES 标准的一个实现是 Rijndael 算法)
    /// </summary>
    /// <param name="EncryptString">待加密密文</param>
    public static string AESEncrypt(string EncryptString)
    {
        return Encoding.UTF8.GetString(AESEncrypt(Encoding.UTF8.GetBytes(EncryptString)));
    }
    /// <summary>
    /// AES 加密(高级加密标准,是下一代的加密算法标准,速度快,安全级别高,目前 AES 标准的一个实现是 Rijndael 算法)
    /// </summary>
    /// <param name="EncryptString">待加密密文</param>
    public static byte[] AESEncrypt(byte[] contentBytes)
    {
        if (contentBytes.Length == 0) { return contentBytes; }

        byte[] resultBytes;
        try
        {
            byte[] keyBytes = Encoding.UTF8.GetBytes(AES_KEY);
            byte[] iv = Encoding.UTF8.GetBytes(AES_IV);
            RijndaelManaged rm = new RijndaelManaged();
            rm.Key = keyBytes;
            rm.IV = iv;
            rm.Mode = CipherMode.CBC;
            rm.Padding = PaddingMode.PKCS7;
            ICryptoTransform ict = rm.CreateEncryptor();
            resultBytes = ict.TransformFinalBlock(contentBytes, 0, contentBytes.Length);
        }
        catch (IOException ex) { throw ex; }
        catch (CryptographicException ex) { throw ex; }
        catch (ArgumentException ex) { throw ex; }
        catch (Exception ex) { throw ex; }

        return resultBytes;
    }
    /// <summary>
    /// AES 解密(高级加密标准,是下一代的加密算法标准,速度快,安全级别高,目前 AES 标准的一个实现是 Rijndael 算法)
    /// </summary>
    /// <param name="DecryptString">待解密密文</param>
    public static string AESDecrypt(string DecryptString)
    {
        return Encoding.UTF8.GetString(AESDecrypt(Convert.FromBase64String(DecryptString)));
    }
    /// <summary>
    /// AES 解密(高级加密标准,是下一代的加密算法标准,速度快,安全级别高,目前 AES 标准的一个实现是 Rijndael 算法)
    /// </summary>
    /// <param name="contentBytes">待解密密文</param>
    public static byte[] AESDecrypt(byte[] contentBytes)
    {
        if (contentBytes.Length == 0) { return contentBytes; }

        byte[] resultBytes;
        try
        {
            byte[] keyBytes = Encoding.UTF8.GetBytes(AES_KEY);
            byte[] iv = Encoding.UTF8.GetBytes(AES_IV);
            RijndaelManaged rm = new RijndaelManaged();
            rm.Key = keyBytes;
            rm.IV = iv;
            rm.Mode = CipherMode.CBC;
            rm.Padding = PaddingMode.PKCS7;
            ICryptoTransform ict = rm.CreateDecryptor();
            resultBytes = ict.TransformFinalBlock(contentBytes, 0, contentBytes.Length);
        }
        catch (IOException ex) { throw ex; }
        catch (CryptographicException ex) { throw ex; }
        catch (ArgumentException ex) { throw ex; }
        catch (Exception ex) { throw ex; }

        return resultBytes;
    }
}

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Unity软件的加密方式主要是对Assembly-CSharp.dll进行加密,这样可以保护Unity的主要代码逻辑不被反编译,以保护软件开发商的合法权益。同时,可以使用工具如DS Protector对Unity软件中的资源文件(如.ress和resources)进行加密,以防止这些资源被非法提取。 一种常用的对称加密体制是DES(Data Encryption Standard),它具有高安全性、低计算开销和快速处理速度的特点。特别适合用于对大量数据和大文件进行加密保护。DES加密算法的基本原理是将输入的明文数据按照一定规则进行加密转换,生成密文数据Unity软件加密的目的是为了保护软件的安全性,防止非法的访问和使用。虽然DES加密算法本身具有较高的安全性,但并不能保证绝对的安全性。然而,由于DES加密算法的强大健壮性和耗时的穷举法破解难度,攻击者很难通过对加密算法的破解来获取网络游戏数据。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [以unity3d为例解读:游戏数据加密](https://blog.csdn.net/flyTie/article/details/126068128)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值