TripleDES: указанный ключ является известным слабым ключом для TripleDES и не может использоваться

Я использую класс .NET 3.0System.Security.Cryptography.MACTripleDES класс для генерации значения MAC. К сожалению, я работаю с аппаратным устройством, которое использует1111111111111111"(в шестнадцатеричном виде) как ключ DES одинарной длины.System.Security.Cryptography библиотека выполняет некоторую проверку работоспособности ключа и возвращает исключение, если вы пытаетесь использовать криптографически слабый ключ.

Например:

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);
}

бросает исключение

System.Security.Cryptography.CryptographicException : Specified key is a known weak key for 'TripleDES' and cannot be used.

Я знаю, что это не безопасный ключ. В производстве устройство будет мигать с новым, безопасным ключом. В то же время, есть ли способ запретить это исключение? Возможноapp.config или настройки реестра?

Изменить: Ключ на самом деле будет 101010 ... из-за алгоритма форсирования нечетной четности. Я не уверен, является ли это универсальным для алгоритма DES или просто требованием в работе по обработке платежей, которую я выполняю.

Редактировать 2: ответ Даниэля ниже содержит очень хорошую информацию о взломе .NET. К сожалению, я не смог решить мою проблему, используя эту технику, но там все еще есть некоторые интересные чтения.

Ответы на вопрос(7)

Ваш ответ на вопрос