SYSLIB0053: o AesGcm deve indicar o tamanho da marca necessária
Os construtores AesGcm que não aceitam um tamanho de marca são obsoletos, a partir do .NET 8:
Chamá-los no código gera aviso SYSLIB0053
em tempo de compilação.
Motivo da obsolescência
O AES-GCM dá suporte a marcas de vários comprimentos, de 12 a 16 bytes, dependendo da plataforma. Anteriormente, a classe AesGcm determinava o tamanho da marca desejado com base no tamanho da marca em si. Por exemplo, se Decrypt tivesse sido chamado com uma marca de 14 bytes, supõe-se que a marca deveria ser de 14 bytes.
No entanto, o AES-GCM dá suporte a esses vários comprimentos por truncamento. O AES-GCM produz nativamente 16 marcas de byte, e marcas mais curtas são produzidas truncando a marca.
Se os chamadores de Decrypt()
obtiverem a marca da entrada e passarem a marca como está, isso efetivamente permitirá que Decrypt()
seja usado com a marca mais curta possível, o que reduz o tamanho efetivo da marca.
Para ajudar os consumidores a garantir que eles estejam usando marcas do tamanho correto, novos construtores para AesGcm foram introduzidos que exigem declarar o tamanho da marca esperada antecipadamente. Durante Encrypt()
ou Decrypt()
, o parâmetro de marca fornecido deve corresponder ao tamanho declarado no construtor.
Solução alternativa
Novos construtores que aceitam um tamanho de marca foram adicionados ao .NET 8. Em vez disso, use um destes construtores:
Suprimir um aviso
Se for necessário usar as APIs obsoletas, você poderá suprimir o aviso no código ou no arquivo de projeto.
Para suprimir apenas uma violação única, adicione as diretivas de pré-processador ao arquivo de origem para desabilitar e, em seguida, reabilite o aviso.
// Disable the warning.
#pragma warning disable SYSLIB0053
// Code that uses obsolete API.
// ...
// Re-enable the warning.
#pragma warning restore SYSLIB0053
Para suprimir todos os avisos SYSLIB0053
no projeto, adicione uma propriedade <NoWarn>
ao arquivo de projeto.
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
...
<NoWarn>$(NoWarn);SYSLIB0053</NoWarn>
</PropertyGroup>
</Project>
Para obter mais informações, confira Suprimir avisos.