Я хочу зашифровать и расшифровать AES-GCM на языке C#, но не могу расшифроватьC#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Я хочу зашифровать и расшифровать AES-GCM на языке C#, но не могу расшифровать

Сообщение Anonymous »

Пожалуйста, помогите мне. Я хочу зашифровать код C# с использованием алгоритма AES-GCM.
Вот мой код, однако он не может расшифровать. Я хочу сохранить код расшифровки.
Как решить эту проблему? Пожалуйста, помогите мне.

Код: Выделить всё

// Encryption code.
private static byte[] salt = new byte[16]; // Fix 1: consider salt
private static byte[] iv = new byte[12];
private const int iterations = 100000; // Fix 2: apply the same iteration count

public string Encrypt(string key, string data)
{
byte[] tag = new byte[16];

using (var rng = RandomNumberGenerator.Create())
{
rng.GetBytes(salt);
rng.GetBytes(iv);
}

byte[] dataBytes = Encoding.UTF8.GetBytes(data);
byte[] privateKey = DeriveKey(key);

using (AesGcm aes = new AesGcm(privateKey, tag.Length))
{
byte[] encrypted = new byte[dataBytes.Length];
aes.Encrypt(iv, dataBytes, encrypted, tag);

byte[] combinedBuffer = new byte[salt.Length + iv.Length + encrypted.Length];
Buffer.BlockCopy(salt, 0, combinedBuffer, 0, salt.Length); // Fix 1: consider salt
Buffer.BlockCopy(iv, 0, combinedBuffer, salt.Length, iv.Length);
Buffer.BlockCopy(encrypted, 0, combinedBuffer, salt.Length + iv.Length, encrypted.Length);

string base64Buff = BuffToBase64(combinedBuffer);
return base64Buff;
}
}

public static byte[] DeriveKey(string password)
{
byte[] passwordBytes = Encoding.UTF8.GetBytes(password);

using (var pbkdf2 = new Rfc2898DeriveBytes(passwordBytes, salt, iterations, HashAlgorithmName.SHA256))
{
byte[] key = pbkdf2.GetBytes(32); // Fix 3: use the same key size (256 bits)
return key;
}
}

public static string BuffToBase64(byte[] buff)
{
return Convert.ToBase64String(buff);
}

public static byte[] Base64ToBuff(string b64)
{
return Convert.FromBase64String(b64);
}

// Decryption code

public string Decrypt(string password, string encryptedString)
{
Span encryptedData = Convert.FromBase64String(encryptedString).AsSpan();
Span salt = encryptedData[..16];
Span nonce = encryptedData[16..(16 + 12)];
Span data = encryptedData[(16 + 12)..^16];
Span tag = encryptedData[^16..];

using Rfc2898DeriveBytes pbkdf2 = new(Encoding.UTF8.GetBytes(password), salt.ToArray(), 100000, HashAlgorithmName.SHA256);
using AesGcm aes = new(pbkdf2.GetBytes(32), tag.Length);

Span result = new byte[data.Length];
aes.Decrypt(nonce, data, tag, result);
return Encoding.UTF8.GetString(result);
}

// Run the program.
var r = new AesGcmEncryption().Encrypt("my passphrase", "abcd");
var r2 = new AesGcmEncryption().Decrypt("my passphrase", r);

Console.WriteLine(r);
Console.WriteLine(r2);
Ошибка:

Указанный аргумент находится вне диапазона допустимых значений
< /blockquote>
Я попробовал изменить все регистры, изменив код, и поискал, но никто не написал подобного кода.

Подробнее здесь: https://stackoverflow.com/questions/788 ... nable-to-d
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Как зашифровать AES-GCM в программировании на C Sharp? Я хочу зашифровать и расшифровать AES-GCM на языке C Sharp. Но я
    Anonymous » » в форуме C#
    0 Ответы
    52 Просмотры
    Последнее сообщение Anonymous
  • Как мне зашифровать с помощью aes-256-gcm и поместить его в файл pkcs7?
    Anonymous » » в форуме C#
    0 Ответы
    110 Просмотры
    Последнее сообщение Anonymous
  • Как я могу зашифровать данные с помощью уже сгенерированного ключа AES 256 GCM 96 (поступившего из Hashicorp Vault)?
    Anonymous » » в форуме JAVA
    0 Ответы
    19 Просмотры
    Последнее сообщение Anonymous
  • Java Crypto — нужна помощь в преобразовании AES/CTR в AES/GCM.
    Anonymous » » в форуме JAVA
    0 Ответы
    32 Просмотры
    Последнее сообщение Anonymous
  • BouncyCastle C# GCM Ecrypt и GCM Decrypt
    Anonymous » » в форуме C#
    0 Ответы
    20 Просмотры
    Последнее сообщение Anonymous

Вернуться в «C#»