当前位置:网站首页>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)
高等代数_证明_两个矩阵乘积为0,则两个矩阵的秩之和小于等于n
BFM模型和Landmarks可视化
【NOI模拟赛】纸老虎博弈(博弈论SG函数,长链剖分)
布局管理器
redis stream 实现消息队列
Yolov5更换主干网络之《旷视轻量化卷积神经网络ShuffleNetv2》
data:image/jpg; base64 format data is converted to image
千万级别的表分页查询非常慢,怎么办?
【论文笔记】Dynamic Convolution: Attention over Convolution Kernels
随机推荐
技术实现 | 图像检索及其在高德的应用
发现WRH几个表被锁了,怎么办?
Mysql insert on duplicate key 死锁问题定位与解决
Linux Redis cache avalanche, breakdown, penetration
GBase 8c数据库集群中,怎么替换节点呢?比如设置A节点为gtm,换到B节点上。
MySQL BIGINT 数据类型
华为设备配置VRRP与路由联动监视上行链路
sql在字段重复时 对某个字段根据最新时间取数
怎么写专利更容易通过?
大佬们,mysql里text类型的字段,FlinkCDC需要特殊处理吗 就像处理bigint uns
设计信息录入界面,完成人员基本信息的录入工作,
(三)DDD上下文映射图——老师,我俩可是纯洁的男女关系!
【UE虚幻引擎】UE5实现动态导航样条线绘制
inject() can only be used inside setup() or functional components.
金仓数据库 KDTS 迁移工具使用指南 (6. 注意事项)
【论文笔记】Understanding Long Programming Languages with Structure-Aware Sparse Attention
MySQL group_concat()详解
redis分布式锁的实现
关于常用状态码4XX提示错误
DWB主题事实及ST数据应用层构建,220803,,