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
Ação recomendada
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:
- Com uma instância TripleDES de TripleDES.Create().
- Usando a valor padrão para FeedbackSize.
- Com a propriedade Mode definida como CipherMode.CFB.
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;