当前位置:网站首页>Unity3D 数据加密
Unity3D 数据加密
2022-08-04 08:28:00 【幽满谷】
加密主要使用 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;
}
}
边栏推荐
- Detailed explanation of TCP protocol
- dalle:zero-shot text-to-image generation
- 关于#sql#的问题:后面换了一个数据库里面的数据就不能跑了
- The sorting algorithm including selection, bubble, and insertion
- Shared_preload_libraries导致很多语法不支持
- 金仓数据库KingbaseES客户端编程接口指南-JDBC(6. JDBC 大对象数据处理)
- MySQL 8.0.29 详细安装(windows zip版)
- 力扣 剑指 Offer 04. 二维数组中的查找
- unittest使用简述
- 从零开始的tensorflow小白使用指北
猜你喜欢

小程序如何使用订阅消息(PHP代码+小程序js代码)

第一次用postgreSQL,想装主从,用的12.7 tar.gz版本。安装好后没在 share目录下找到样例配置recovery.conf.sample,是安装方式不对,还是路径不对?

sql在字段重复时 对某个字段根据最新时间取数

MYSQL JDBC图书管理系统

字符流与字节流的区别

【JS 逆向百例】某网站加速乐 Cookie 混淆逆向详解

inject() can only be used inside setup() or functional components.

【CNN基础】转置卷积学习笔记

Recommend several methods that can directly translate PDF English documents

【剑指Offer】二分法例题
随机推荐
Distributed Computing Experiment 4 Random Signal Analysis System
Linux Redis cache avalanche, breakdown, penetration
How to write patents are more likely to pass?
ShuffleNet v2 network structure reproduction (Pytorch version)
怎么写专利更容易通过?
金仓数据库 KDTS 迁移工具使用指南 (4. BS 版使用说明)
【论文笔记】Understanding Long Programming Languages with Structure-Aware Sparse Attention
研究性学习专题 3_LL(1)语法分析设计原理与实现
『递归』递归概念与典型实例
powershell和cmd对比
【论文笔记】Delving into the Estimation Shift of Batch Normalization in a Network
oracle sql 多表查询
MySQL 8.0.29 详细安装(windows zip版)
Shared_preload_libraries导致很多语法不支持
金仓数据库KingbaseES客户端编程接口指南-JDBC(9. JDBC 读写分离)
沃尔玛、阿里国际该如何做测评自养号?
(三)DDD上下文映射图——老师,我俩可是纯洁的男女关系!
【JS 逆向百例】某网站加速乐 Cookie 混淆逆向详解
Convert callback function to Flow
发现WRH几个表被锁了,怎么办?