当前位置:网站首页>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;
}
}
边栏推荐
猜你喜欢

ShuffleNet v2 network structure reproduction (Pytorch version)

华为设备配置VRRP与路由联动监视上行链路

Yolov5更换主干网络之《旷视轻量化卷积神经网络ShuffleNetv2》

How many assertion methods are commonly used in JMeter?

从零开始的tensorflow小白使用指北

Distributed Computing Experiment 1 Load Balancing

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

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

【电脑录制屏】如何使用bandicam录游戏 设置图文教程

yolo x 跑起来,详细的不行,且内含800错误解决办法
随机推荐
【JS 逆向百例】某网站加速乐 Cookie 混淆逆向详解
金仓数据库KingbaseES客户端编程接口指南-JDBC(6. JDBC 大对象数据处理)
在安装GBase 8c数据库的时候,报错显示“Host ips belong to different cluster”。这是为什么呢?有什么解决办法?
使用GBase 8c数据库的时候,遇到这种报错
秒懂大模型 | 3步搞定AI写摘要
【虚幻引擎UE】UE5基于Gltf加载插件实现gltf格式骨骼动画在线/本地导入和切换
sql在字段重复时 对某个字段根据最新时间取数
Redis分布式锁的应用
金仓数据库 KDTS 迁移工具使用指南 (5. SHELL版使用说明)
尚医通【预约挂号系统】总结
js异步变同步、同步变异步
data:image/jpg; base64 format data is converted to image
The sorting algorithm including selection, bubble, and insertion
技术实现 | 图像检索及其在高德的应用
最近的一些杂感-20220731
解决循环依赖import cycle not allowed的最佳解决办法
2022爱分析· 银行数字化厂商全景报告
「PHP基础知识」转换数据类型
智能健身动作识别:PP-TinyPose打造AI虚拟健身教练!
关于#sql#的问题:后面换了一个数据库里面的数据就不能跑了