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;
    }
}

猜你喜欢

转载自blog.csdn.net/youmangu/article/details/126143100
今日推荐