TripleDES: a chave especificada é uma chave fraca conhecida para 'TripleDES' e não pode ser usada
Estou usando a classe .NET 3.0System.Security.Cryptography.MACTripleDES
class para gerar um valor MAC. Infelizmente, estou trabalhando com um dispositivo de hardware que usa "1111111111111111
"(como hexadecimal) como uma chave DES de comprimento únicSystem.Security.Cryptography
biblioteca @ faz uma verificação de sanidade na chave e retorna uma exceção se você tentar usar uma chave criptograficamente frac
Por exemplo
byte[] key = new byte[24];
for (int i = 0; i < key.Length; i++)
key[i] = 0x11;
byte[] data = new byte[] { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
byte[] computedMac = null;
using (MACTripleDES mac = new MACTripleDES(key))
{
computedMac = mac.ComputeHash(data);
}
lança uma exceção
System.Security.Cryptography.CryptographicException : Specified key is a known weak key for 'TripleDES' and cannot be used.
Sei que essa não é uma chave segura. Na produção, o dispositivo piscará com uma chave nova e segura. Nesse meio tempo, existe alguma maneira de impedir que essa exceção seja lançada? Talvez umapp.config
ou configuração do registro?
Edit: A chave seria realmente 101010 ... devido ao algoritmo forçando paridade ímpar. Não tenho certeza se isso é universal para o algoritmo DES ou apenas um requisito no trabalho de processamento de pagamentos que eu faç
Edit 2: A resposta de Daniel abaixo tem algumas informações muito boas sobre hackers .NET. Infelizmente, não consegui resolver meu problema usando essa técnica, mas ainda há algumas leituras interessantes lá.