当前位置:网站首页>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;
}
}
边栏推荐
- 小程序如何使用订阅消息(PHP代码+小程序js代码)
- 技术实现 | 图像检索及其在高德的应用
- How many assertion methods are commonly used in JMeter?
- 从零开始C语言精讲篇6:结构体
- Yolov5 replaces the backbone network of "Megvii Lightweight Convolutional Neural Network ShuffleNetv2"
- C# 实用的第三方库
- 华为设备配置VRRP与路由联动监视上行链路
- IDEA引入类报错:“The file size (2.59 MB) exceeds the configured limit (2.56MB)
- 【UE虚幻引擎】UE5实现动态导航样条线绘制
- Detailed explanation of TCP protocol
猜你喜欢
给Unity Behavior Designer(Unity行为树) 的Can See Object 画圆锥辅助图
【JS 逆向百例】某网站加速乐 Cookie 混淆逆向详解
线程的状态
data:image/jpg; base64 format data is converted to image
技术实现 | 图像检索及其在高德的应用
24.循环神经网络RNN
GIS数据与CAD数据间带属性字段互相转换还原工具,解决ArcGIS等软件进行GIS数据转CAD数据无法保留属性字段问题
MySQL BIGINT 数据类型
高等代数_证明_对称矩阵一定能够相似对角化
Lightweight Backbone VGNetG Achieves "No Choice, All" Lightweight Backbone Network
随机推荐
关于Oracle RAC 11g重建磁盘组的问题
关于#sql#的问题:后面换了一个数据库里面的数据就不能跑了
MySQL 8.0.29 详细安装(windows zip版)
2022的七夕,奉上7个精美的表白代码,同时教大家改源码快速自用
【虚幻引擎UE】UE5实现WEB和UE通讯思路
高等代数_证明_两个矩阵乘积为0,则两个矩阵的秩之和小于等于n
dalle:zero-shot text-to-image generation
【论文笔记】Understanding Long Programming Languages with Structure-Aware Sparse Attention
布局管理器
新特性解读 | MySQL 8.0 在线调整 REDO
最近的一些杂感-20220731
leetcode 22.8.1 二进制加法
sql在字段重复时 对某个字段根据最新时间取数
华为设备配置VRRP与NQA联动监视上行链路
金仓数据库 KDTS 迁移工具使用指南 (7. 部署常见问题)
推荐几种可以直接翻译PDF英文文献的方法
给Unity Behavior Designer(Unity行为树) 的Can See Object 画圆锥辅助图
C# DirectoryInfo类
从零开始的tensorflow小白使用指北
GIS数据与CAD数据间带属性字段互相转换还原工具,解决ArcGIS等软件进行GIS数据转CAD数据无法保留属性字段问题