SYSLIB0053: AesGcm deve indicar o tamanho de tag necessário
Os AesGcm construtores que não aceitam um tamanho de tag são obsoletos, começando no .NET 8:
Chamá-los em código gera aviso SYSLIB0053
em tempo de compilação.
Motivo da obsolescência
AES-GCM suporta tags de vários comprimentos, de 12 a 16 bytes, dependendo da plataforma. Anteriormente, a AesGcm classe determinava o tamanho desejado da tag com base no tamanho da própria tag. Por exemplo, se foi chamado com uma tag de 14 bytes, presumiu-se Decrypt que a tag deveria ter 14 bytes.
No entanto, o AES-GCM suporta esses vários comprimentos por truncamento. AES-GCM produz nativamente tags de 16 bytes, e tags mais curtas são produzidas truncando a tag.
Se os chamadores obtiverem Decrypt()
a tag da entrada e passarem a tag como está, ela efetivamente permite Decrypt()
ser usada com a tag mais curta possível, o que reduz o tamanho efetivo da tag.
Para ajudar os consumidores a garantir que estão usando tags do tamanho correto, novos construtores para AesGcm foram introduzidos que exigem declarar o tamanho da tag esperada antecipadamente. Durante Encrypt()
ou Decrypt()
, o parâmetro de tag fornecido deve corresponder ao tamanho declarado no construtor.
Solução
Novos construtores que aceitam um tamanho de marca foram adicionados no .NET 8. Em vez disso, use um destes construtores:
Suprimir um aviso
Se você precisar usar as APIs obsoletas, poderá suprimir o aviso no código ou no arquivo de projeto.
Para suprimir apenas uma única violação, adicione diretivas de pré-processador ao arquivo de origem para desativar e reativar 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 SYSLIB0053
avisos em seu projeto, adicione uma <NoWarn>
propriedade ao seu arquivo de projeto.
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
...
<NoWarn>$(NoWarn);SYSLIB0053</NoWarn>
</PropertyGroup>
</Project>
Para obter mais informações, consulte Suprimir avisos.