0b9cb03bae
Downloads latest script from server if outdated (10 seconds) Server sends encrypted token to client to keep session new and rejects ..old tokens This allows updating the script in this repository
44 lines
1.2 KiB
C#
44 lines
1.2 KiB
C#
using System.Security.Cryptography;
|
|
|
|
namespace MinecraftDiscordBot;
|
|
|
|
public class AesCipher : ICipher {
|
|
private readonly byte[] key;
|
|
private readonly byte[] iv;
|
|
|
|
public AesCipher() {
|
|
using var aes = Aes.Create();
|
|
aes.GenerateKey();
|
|
aes.GenerateIV();
|
|
key = aes.Key;
|
|
iv = aes.IV;
|
|
}
|
|
|
|
public byte[] Encrypt(byte[] plain) {
|
|
using var aes = Aes.Create();
|
|
aes.Key = key;
|
|
aes.IV = iv;
|
|
var transformer = aes.CreateEncryptor();
|
|
using var ms = new MemoryStream();
|
|
using (var cs = new CryptoStream(ms, transformer, CryptoStreamMode.Write))
|
|
cs.Write(plain);
|
|
return ms.ToArray();
|
|
}
|
|
|
|
public byte[] Decrypt(byte[] cipher) {
|
|
using Aes aes = Aes.Create();
|
|
aes.Key = key;
|
|
aes.IV = iv;
|
|
var transformer = aes.CreateDecryptor();
|
|
using MemoryStream ms = new MemoryStream(cipher);
|
|
using CryptoStream cs = new CryptoStream(ms, transformer, CryptoStreamMode.Read);
|
|
using MemoryStream os = new MemoryStream();
|
|
cs.CopyTo(os);
|
|
return os.ToArray();
|
|
}
|
|
}
|
|
|
|
public interface ICipher {
|
|
byte[] Decrypt(byte[] cipher);
|
|
byte[] Encrypt(byte[] plain);
|
|
} |