• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

szyfrowanie AES C#

VPS Starter Arubacloud
0 głosów
560 wizyt
pytanie zadane 7 września 2019 w C# przez Magikarp Początkujący (260 p.)
edycja 7 września 2019 przez Magikarp

Dobry wieczór,

Utknąłem z kodem AES'a, zerknie ktoś świeżym okiem?

public class AesEncryptor : IDisposable
{
    public string Get(string key, string plainText)
    {
        plainText = "XPlain"; // debug
        key = "E546C8DF278CD5931069B522E695D4F2"; // debug
        _aes = Aes.Create();
        _aes.IV = Encoding.UTF8.GetBytes("33d6f2726f744392"); // debug
        _transform = _aes.CreateEncryptor(
            rgbKey: Encoding.UTF8.GetBytes(key),
            rgbIV: _aes.IV);
        _memory = new MemoryStream();
        _crypto = new CryptoStream(
            stream: _memory,
            transform: _transform,
            mode: CryptoStreamMode.Write);
        _streamWriter = new StreamWriter(stream: _crypto);
        _streamWriter.Write(plainText);
        var content = Merge(_aes.IV, _memory.ToArray());
        return Convert.ToBase64String(content.ToArray());
    }

    private IEnumerable<T> Merge<T>(params T[][] arrays)
    {
        var merged = arrays.SelectMany(arr => arr);
        foreach (var t in merged)
            yield return t;
    }

    public void Dispose()
    {
        _streamWriter.Dispose();
        _crypto.Dispose();
        _memory.Dispose();
        _transform.Dispose();
        _aes.Dispose();
        GC.SuppressFinalize(this);
    }

    ~AesEncryptor()
    {
        Dispose();
    }

    private Aes _aes;
    private MemoryStream _memory;
    private CryptoStream _crypto;
    private StreamWriter _streamWriter;
    private ICryptoTransform _transform;
}

Przy debugowaniu _aes.CreateEncryptor nie zawiera żadnej informacji o key'u. A metoda zwraca tylko 16-bajtowy kod nieuwzględniający szyfrowanego tekstu.

Projekt .NET Core 2.2.6

Pozdrawiam,

AM

1 odpowiedź

+1 głos
odpowiedź 7 września 2019 przez adrian17 Ekspert (344,100 p.)
wybrane 8 września 2019 przez Magikarp
 
Najlepsza

Jak to zamienisz na normalny łańcuch using() ze zmiennymi lokalnymi, to powinno zadziałać (to znaczy: zamieniłem na using i działa), bo bez tego bufory strumieni nie są flushowane gdy być powinny.

Patrz oficjalne przykłady na https://docs.microsoft.com/en-us/dotnet/api/system.security.cryptography.aes?view=netframework-4.8

komentarz 7 września 2019 przez Magikarp Początkujący (260 p.)
ok, ale jeżeli chciałbym nie używać using to w którym momęcię trzeba zrobić flusha?
1
komentarz 7 września 2019 przez adrian17 Ekspert (344,100 p.)
Co najmniej na strumieniach po skończeniu pisania.

Natomiast podtrzymuję że to jak to teraz napisałeś, wygląda dla mnie dość źle i niepotrzebnie.

Podobne pytania

+1 głos
0 odpowiedzi 312 wizyt
pytanie zadane 9 października 2021 w Systemy operacyjne, programy przez Ser-Ver Użytkownik (820 p.)
+1 głos
1 odpowiedź 504 wizyt
+2 głosów
1 odpowiedź 312 wizyt
pytanie zadane 22 stycznia 2021 w Bezpieczeństwo, hacking przez pvalue Dyskutant (8,720 p.)

92,453 zapytań

141,262 odpowiedzi

319,088 komentarzy

61,854 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...