Nie mogę znaleźć fajnego, czystego przykładu użycia 128-bitowego szyfrowania AES.
Czy ktoś ma przykładowy kod?
c#
cryptography
aes
rijndaelmanaged
Dan Esparza
źródło
źródło
Odpowiedzi:
Jeśli chcesz po prostu skorzystać z wbudowanego dostawcy kryptografii RijndaelManaged, zapoznaj się z następującym artykułem pomocy (zawiera również prosty przykład kodu):
I na wypadek, gdybyś potrzebował próbki w pośpiechu, oto jest w całej swojej plagiatowej chwale:
źródło
using ()
Blok automatycznie dysponuje przedmiotu myRijndael (i każdego innego RijndaelManaged przedmiotu w tym przykładzie). Być może Twój komentarz dotyczył wcześniejszej wersji odpowiedzi lub link zawierał złe przykłady, ale dzisiaj tak nie jest.Niedawno musiałem ponownie się z tym zmierzyć w moim własnym projekcie - i chciałem udostępnić nieco prostszy kod, którego używałem, ponieważ to pytanie i seria odpowiedzi pojawiały się w moich wyszukiwaniach.
Nie zamierzam wchodzić w obawy związane z bezpieczeństwem dotyczące tego, jak często aktualizować takie rzeczy, jak sól i wektor inicjalizacji - to temat na forum bezpieczeństwa i jest tam kilka świetnych zasobów do obejrzenia. To jest po prostu blok kodu do zaimplementowania
AesManaged
w C #.Kod jest bardzo prosty w użyciu. Dosłownie wymaga tylko następujących elementów:
Domyślnie implementacja korzysta z AesManaged - ale w rzeczywistości można również wstawić dowolne inne
SymmetricAlgorithm
. Listę dostępnychSymmetricAlgorithm
dziedziczników dla .NET 4.5 można znaleźć pod adresem:http://msdn.microsoft.com/en-us/library/system.security.cryptography.symmetricalgorithm.aspx
W chwili pisania tego posta aktualna lista zawiera:
AesManaged
RijndaelManaged
DESCryptoServiceProvider
RC2CryptoServiceProvider
TripleDESCryptoServiceProvider
Aby użyć
RijndaelManaged
z powyższym kodem, jako przykład, należy użyć:Mam nadzieję, że jest to pomocne dla kogoś tam.
źródło
The name 'GetBytes' does not exist in the current context
. Czy mogę zapytać, jakiej wersji platformy .Net używasz?Spójrz na próbkę tutaj ..
http://msdn.microsoft.com/en-us/library/system.security.cryptography.rijndaelmanaged(v=VS.100).aspx#Y2262
Przykładem na MSDN nie działa normalnie (wystąpi błąd), ponieważ nie ma żadnego wartość początkowa z Initial Vector (IV) i Key . Dodałem 2-liniowy kod i teraz działam normalnie.
Więcej szczegółów poniżej:
źródło
Korzystasz z AES czy wdrażasz AES? Do korzystania z AES służy klasa System.Security.Cryptography.RijndaelManaged.
źródło
Aby uzyskać bardziej kompletny przykład, który wykonuje wyprowadzanie klucza oprócz szyfrowania AES, zobacz odpowiedź i linki zamieszczone w artykule Uzyskiwanie szyfrowania AES do pracy w języku JavaScript i C # .
EDYTUJ
notatkę boczną: Kryptografia JavaScript uważana za szkodliwą. Warto przeczytać.
źródło
źródło
http://www.codeproject.com/Articles/769741/Csharp-AES-bits-Encryption-Library-with-Salt
źródło
Wypróbuj ten kod, może być przydatny.
1. Utwórz nowy projekt C # i dodaj następujący kod do Form1:
2. Stwórz clsCrypto.cs i skopiuj wklej następujący kod w swojej klasie i uruchom kod. Użyłem MD5 do wygenerowania wektora początkowego (IV) i KEY of AES.
źródło
Możesz użyć hasła z pola tekstowego, takiego jak klucz ... Za pomocą tego kodu możesz zaszyfrować / odszyfrować tekst, obraz, dokument Word, PDF ...
Konwertuj hasło z pola tekstowego na tablicę bajtów ...
źródło
tutaj jest schludny i czysty kod, aby zrozumieć algorytm AES 256 zaimplementowany w wywołaniu C # funkcji Encrypt as
encryptedstring = cryptObj.Encrypt(username, "AGARAMUDHALA", "EZHUTHELLAM", "SHA1", 3, "@1B2c3D4e5F6g7H8", 256);
źródło