Unity中实现文件加密
生活随笔
收集整理的這篇文章主要介紹了
Unity中实现文件加密
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
一:前言
常用的文件加密算法有:DES、AES、RSA、SHA-1、MD5.....
.Net自帶了安全類庫,在System.Security.Cryptography下有一些常用的加密算法
其中MD5屬于摘要算法,多用于檢查文件是否有修改
二:加密算法介紹
——對稱加密
對稱加密算法有AES、DES、3DES等
在對稱加密算法中,密鑰只有一個,加密和解密都使用相同的密鑰
——非對稱加密
非對稱加密算法有RSA、DSA、ECC等
在非對稱加密算法中,需要兩個密鑰,一個公鑰一個私鑰
如果使用公鑰對數據進行加密,只有使用對應的私鑰才能進行解密,如果使用私鑰對數據進行加密,只有使用對應的公鑰才能進行解密
——簽名加密算法(散列算法)
簽名加密算法有SHA1、MD5、HMAC等
簽名加密算法不需要密鑰,一般不可逆
三:AES算法
需要注意的是加密后獲得的bytes千萬別用UTF8去獲取字符串,不然會有信息損失,導致后面解密失敗
using System; using System.Security.Cryptography; using System.Text;/// <summary> /// AES工具 /// </summary> public class AESUtils {const string AES_KEY = "dhjkfhskajflwoxj";/// <summary>/// AES加密/// </summary>/// <param name="content">明文</param>public static string Encrypt(string content){if (string.IsNullOrEmpty(content)){return null;}byte[] contentBytes = Encoding.UTF8.GetBytes(content);byte[] keyBytes = Encoding.UTF8.GetBytes(AES_KEY);RijndaelManaged rm = new RijndaelManaged();rm.Key = keyBytes;rm.Mode = CipherMode.ECB;rm.Padding = PaddingMode.PKCS7;ICryptoTransform ict = rm.CreateEncryptor();byte[] resultBytes = ict.TransformFinalBlock(contentBytes, 0, contentBytes.Length);return Convert.ToBase64String(resultBytes, 0, resultBytes.Length);}/// <summary>/// AES解密/// </summary>/// <param name="str">密文</param>public static string Decrypt(string content){if (string.IsNullOrEmpty(content)){return null;}byte[] contentBytes = Convert.FromBase64String(content);byte[] keyBytes = Encoding.UTF8.GetBytes(AES_KEY);RijndaelManaged rm = new RijndaelManaged();rm.Key = keyBytes;rm.Mode = CipherMode.ECB;rm.Padding = PaddingMode.PKCS7;ICryptoTransform ict = rm.CreateDecryptor();byte[] resultBytes = ict.TransformFinalBlock(contentBytes, 0, contentBytes.Length);return Encoding.UTF8.GetString(resultBytes);} }四:DES算法
需要注意的是加密后獲得的bytes千萬別用UTF8去獲取字符串,不然會有信息損失,導致后面解密失敗
using System; using System.Security.Cryptography; using System.Text; using System.IO; using UnityEngine;/// <summary> /// DES工具 /// </summary> public class DESUtils {public const string DES_KEY = "lhwyjlyy";/// <summary>/// DES加密/// </summary>/// <param name="content">明文</param>public static string Encrypt(string content){if (string.IsNullOrEmpty(content)){return null;}byte[] contentBytes = Encoding.UTF8.GetBytes(content);byte[] keyBytes = Encoding.UTF8.GetBytes(DES_KEY);DESCryptoServiceProvider provider = new DESCryptoServiceProvider();provider.Key = keyBytes;provider.IV = keyBytes;MemoryStream ms = new MemoryStream();CryptoStream cs = new CryptoStream(ms, provider.CreateEncryptor(), CryptoStreamMode.Write);cs.Write(contentBytes, 0, contentBytes.Length);cs.FlushFinalBlock();return Convert.ToBase64String(ms.ToArray());}/// <summary>/// DES解密/// </summary>/// <param name="content">密文</param>public static string Decrypt(string content){if (string.IsNullOrEmpty(content)){return null;}byte[] contentBytes = Convert.FromBase64String(content);byte[] keyBytes = Encoding.UTF8.GetBytes(DES_KEY);DESCryptoServiceProvider provider = new DESCryptoServiceProvider();provider.Key = keyBytes;provider.IV = keyBytes;MemoryStream ms = new MemoryStream();CryptoStream cs = new CryptoStream(ms, provider.CreateDecryptor(), CryptoStreamMode.Write);cs.Write(contentBytes, 0, contentBytes.Length);cs.FlushFinalBlock();return Encoding.UTF8.GetString(ms.ToArray());} }總結
以上是生活随笔為你收集整理的Unity中实现文件加密的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: jetson nano 安装向日葵客户端
- 下一篇: [GYCTF2020]Easyphp