Share via


Alteração do valor do FeedbackSize padrão para instâncias criadas por TripleDES.Create

O valor padrão da propriedade SymmetricAlgorithm.FeedbackSize da instância TripleDES retornada de TripleDES.Create() foi alterado de 64 para 8 para facilitar a migração do .NET Framework. Essa propriedade, a menos que usada diretamente no código do chamador, é usada somente quando a propriedade Mode for CipherMode.CFB.

O suporte para o modo CFB foi adicionado primeiro ao .NET para a versão 5.0 RC1. Portanto, somente os aplicativos .NET 5 RC1 e .NET 5 RC2 deverão ser afetados por essa alteração.

Descrição das alterações

No .NET Core e nas versões anteriores de pré-lançamento do .NET 5, TripleDES.Create().FeedbackSize tem um valor padrão de 64. A partir da versão RTM do .NET 5, TripleDES.Create().FeedbackSize tem um valor padrão de 8.

Motivo da alteração

No .NET Framework, a classe base TripleDES usa 64 como padrão para o valor de FeedbackSize, mas a classe TripleDESCryptoServiceProvider substitui o padrão para 8. Quando a propriedade FeedbackSize foi introduzida no .NET Core na versão 2.0, esse mesmo comportamento foi preservado. No entanto, no .NET Framework, TripleDES.Create() retorna uma instância de TripleDESCryptoServiceProvider, portanto, o valor padrão da fábrica de algoritmos é 8. Para o .NET Core e o .NET 5+, a fábrica de algoritmos retorna uma implementação não pública que, até agora, tinha um valor padrão de 64.

Alterar o valor FeedbackSize da classe de implementação TripleDES para 8 permite que aplicativos gravados para .NET Framework que especificaram o modo de criptografia como CFB, mas não atribuíram explicitamente a propriedade FeedbackSize, continuem a funcionar no .NET 5.

Versão introduzida

5,0

Aplicativos que criptografam ou descriptografam dados nas versões RC1 ou RC2 do .NET 5 fazem isso com o CFB64, quando as seguintes condições são atendidas:

Para manter esse comportamento, atribua a propriedade FeedbackSize a 64.

Nem todas as implementações TripleDES usam o mesmo padrão para FeedbackSize. Recomendamos que, se você usar o modo de criptografia CFB em instâncias TripleDES, sempre atribua explicitamente o valor da propriedade FeedbackSize.

TripleDES cipher = TripleDES.Create();
cipher.Mode = CipherMode.CFB;
// Explicitly set the FeedbackSize for CFB to control between CFB8 and CFB64.
cipher.FeedbackSize = 8;

APIs afetadas