bingo 项目提交
This commit is contained in:
@@ -0,0 +1,57 @@
|
||||
using System.IO;
|
||||
using System.Text;
|
||||
using System.Security.Cryptography;
|
||||
using UnityEngine;
|
||||
|
||||
namespace Comgreate
|
||||
{
|
||||
public class AESForFileKit
|
||||
{
|
||||
private static readonly byte[] Salt = Encoding.UTF8.GetBytes("Sgfsads");
|
||||
|
||||
|
||||
private const int Iterations = 1000;
|
||||
|
||||
|
||||
public static void EncryptFile(string inputPath, string outputPath, string password)
|
||||
{
|
||||
var passwordBytes = Encoding.UTF8.GetBytes(password);
|
||||
var inputStream = new FileStream(inputPath, FileMode.Open, FileAccess.Read);
|
||||
var outputStream = new FileStream(outputPath, FileMode.Create, FileAccess.Write);
|
||||
|
||||
using var aes = new AesManaged();
|
||||
var key = new Rfc2898DeriveBytes(passwordBytes, Salt, Iterations);
|
||||
aes.Key = key.GetBytes(aes.KeySize / 8);
|
||||
aes.IV = key.GetBytes(aes.BlockSize / 8);
|
||||
using var cryptoStream = new CryptoStream(outputStream, aes.CreateEncryptor(), CryptoStreamMode.Write);
|
||||
inputStream.CopyTo(cryptoStream);
|
||||
cryptoStream.FlushFinalBlock();
|
||||
cryptoStream.Close();
|
||||
outputStream.Close();
|
||||
inputStream.Close();
|
||||
}
|
||||
|
||||
|
||||
public static byte[] DecryptToBytes(string inputPath, string password, out int dataSize)
|
||||
{
|
||||
var passwordBytes = Encoding.UTF8.GetBytes(password);
|
||||
var inputStream = new FileStream(inputPath, FileMode.Open, FileAccess.Read);
|
||||
var outputMemoryStream = new MemoryStream();
|
||||
|
||||
using (var aes = new AesManaged())
|
||||
{
|
||||
var key = new Rfc2898DeriveBytes(passwordBytes, Salt, Iterations);
|
||||
aes.Key = key.GetBytes(aes.KeySize / 8);
|
||||
aes.IV = key.GetBytes(aes.BlockSize / 8);
|
||||
using (var cryptoStream = new CryptoStream(inputStream, aes.CreateDecryptor(), CryptoStreamMode.Read))
|
||||
{
|
||||
cryptoStream.CopyTo(outputMemoryStream);
|
||||
}
|
||||
}
|
||||
|
||||
var outputBytes = outputMemoryStream.ToArray();
|
||||
dataSize = outputBytes.Length;
|
||||
return outputBytes;
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user