pascalabcnet/VisualPlugins/TraningControlPlugin/TeacherPluginUtils.cs
2025-04-10 12:06:40 +03:00

95 lines
3.1 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Management;
using System.Security.Cryptography;
using System.IO;
namespace VisualPascalABCPlugins
{
public static class TeacherPluginUtils
{
public static string ProcessorId()
{
/*var mbs = new ManagementObjectSearcher("Select ProcessorId From Win32_processor");
var mbsList = mbs.Get();
foreach (ManagementObject mo in mbsList)
{
var pId = mo["ProcessorId"];
if (pId != null)
return pId.ToString();
else return "AAAAAAAAAAAAAAAA";
}*/
return "AAAAAAAAAAAAAAAA";
}
public static byte[] Encrypt(string src)
{
var ae = Aes.Create();
var key = Encoding.UTF8.GetBytes(ProcessorId());
var crypt = ae.CreateEncryptor(key, key);
byte[] encrypted;
using (var ms = new MemoryStream())
{
using (var cs = new CryptoStream(ms, crypt, CryptoStreamMode.Write))
using (var sw = new StreamWriter(cs))
{
sw.Write(src);
}
encrypted = ms.ToArray();
}
return encrypted;
}
public static string EncryptString(string src)
{
var bytes = Encrypt(src);
return Convert.ToBase64String(bytes);
}
public static string Decrypt(byte[] data)
{
if (data == null)
return "";
var ae = Aes.Create();
var key = Encoding.UTF8.GetBytes(ProcessorId());
var crypt = ae.CreateDecryptor(key, key);
string text;
using (var ms = new MemoryStream(data))
using (var cs = new CryptoStream(ms, crypt, CryptoStreamMode.Read))
using (var sr = new StreamReader(cs))
{
text = sr.ReadToEnd();
}
return text;
}
public static string DecryptString(string data)
{
var bytes = Convert.FromBase64String(data);
return Decrypt(bytes);
}
public static string[] ReadLoginPassFromAuth(string AuthFileFullName)
{
// Исключения обрабатываются уровнем выше
string[] lparr = new string[0];
var n = 10000;
var arr = new byte[n];
int nbytes;
// Здесь может быть исключение если с файлом или путем проблемы
using (var fs = new FileStream(AuthFileFullName, FileMode.Open))
{
nbytes = fs.Read(arr, 0, n);
}
var data = new byte[nbytes];
System.Array.Copy(arr, data, nbytes);
// Здесь может быть исключение если ключ неправильный
var lp = Decrypt(data);
lparr = lp.Split((char)10);
return lparr;
}
}
}