Възможно ли е да шифровате данни с AES (256 бита) GCM режим в .net framework 4.7?

MSDN връзка предоставя препратки към конкретни AES класове:

  • System.Security.Cryptography.AesCng
  • System.Security.Cryptography.AesCryptoServiceProvider
  • System.Security.Cryptography.AesManaged

AesCryptoServiceProvider обаче е за по-стари машини, а AesManaged не е сертифициран за FIPS. Така че единствената опция е AesCng. AesCng има свойство, наречено Mode, което ще приема само: CBC, ECB, OFB, CFB, CTS, но без GCM.

  1. AES GCM поддържа ли се в тази рамка?
  2. Ако да, има ли пример?
  3. Ако не, какви са ми възможностите?

person Raghu    schedule 06.09.2017    source източник
comment
Не, не и използвайте BouncyCastle   -  person Luke Joshua Park    schedule 06.09.2017
comment
Това ли е единственият ми вариант?   -  person Raghu    schedule 06.09.2017
comment
Очевидно BouncyCastle не е единствената реализация на AES, която поддържа GCM режим, така че не. Но е най-често срещаният.   -  person Luke Joshua Park    schedule 06.09.2017
comment
Другата опция е P/Invoke в BCryptEncrypt ръчно.   -  person bartonjs    schedule 06.09.2017
comment
Имайте предвид, че е в .NET Core (от 2.1.3): github.com/dotnet/corefx/blob/master/src/   -  person Timo    schedule 17.09.2018
comment
@Timo Изглежда, че не е за пускане, пише, че ще бъде в 3.0 тук ( заявка за функция на github за GCM / CCM)   -  person Maarten Bodewes    schedule 08.01.2019


Отговори (1)


Този отговор отразява коментарите от Luke Park, bartonjs, Timo и Maarten Bodewes по-горе.

Една от възможностите е да използвате C# библиотеката Bouncycastle, която има собствена самостоятелна реализация на AES като както и режим GCM. Погледнете изходния код за класовете GCMBlockCipher, AesEngine и AEADParameters.

Друг вариант е да използвате P/Invoke за ръчно извикване на BCryptEncrypt.

И накрая, имайте предвид, че .NET Core ще има поддръжка от 3.0. Източникът вече е наличен в github.

person Community    schedule 08.01.2019
comment
Като актуализация през януари 2021 г., документацията за AesGcm клас вече е активен в MSDN и се поддържа в .Net 5.0 и .Net Core 3.0. Това е част от .Net Standard 2.1. - person reirab; 20.01.2021