/
ibavca1
/
A4.ControlPost
Обзор
Документация
Войти
/
ibavca1
/
A4.ControlPost
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
src/A4.ControlPost.UserEditor/Services/TokenStorage.cs
78 строк
2 KB
ibavcagmailcom
Добавлен Autofac
22 май 2026, 08:47
22 май 2026, 08:47
d750a6a
Код
Авторство
О чём код?
using System; using System.Diagnostics; using System.Runtime.InteropServices.Marshalling; using System.Security.Cryptography; using System.Text; namespace A4.ControlPost.UserEditor.Services; public static class TokenStorage { private static readonly string FilePath = "user.toke"; private static readonly byte[] Key = Encoding.UTF8.GetBytes(""); private static readonly byte[] Iv = new byte[16]; public static void SaveToken(string token) { if (string.IsNullOrEmpty(token)) throw new ArgumentNullException(nameof(token)); try { var encryptedToken = Encrypt(token); } catch (Exception ex) { Trace.TraceError(ex.Message); } } public static string ReadToken() { try { if (!File.Exists(FilePath)) return string.Empty; var encryptedToken = File.ReadAllText(FilePath); return Decrypt(encryptedToken); } catch (Exception ex) { Trace.TraceError(ex.Message); ClearToken(); return string.Empty; } } public static void ClearToken() { try { if(File.Exists(FilePath)) File.Delete(FilePath); } catch (Exception ex) { Trace.TraceError(ex.Message); } } private static string Encrypt(string plaiText) { using var aes = Aes.Create(); aes.Key = Key; aes.IV = Iv; using var encryptor = aes.CreateEncryptor(aes.Key, aes.IV); using var ms = new MemoryStream(); using var cs = new CryptoStream(ms, encryptor, CryptoStreamMode.Write); using (var sw = new StreamWriter(cs)) { sw.Write(plaiText); } return Convert.ToBase64String(ms.ToArray()); } private static string Decrypt(string cipherText) { var buffer = Convert.FromBase64String(cipherText); using var aes = Aes.Create(); aes.Key = Key; aes.IV = Iv; using var decryptor = aes.CreateDecryptor(aes.Key, aes.IV); using var ms = new MemoryStream(buffer); using var cs = new CryptoStream(ms, decryptor, CryptoStreamMode.Read); using var sr = new StreamReader(cs); return sr.ReadToEnd(); } }