Как мне сделать MAC ISO 9797-1 с тройным DES на C #?

У меня есть проект, который предусматривает следующие правила шифрования для 24-байтового блока данных.

1 ) Криптография должна выполняться с использованием полного тройного алгоритма DES MAC, как определено в 9797-1 как MAC. алгоритм 3 с преобразованием вывода 3 без усечения и с DES в режиме CBC как блок шифр с нулевым значением ICV. Последние 8 байтов зашифрованных данных составляют то, что нам нужно.

Программа сообщает, что шифрование выполнено неправильно. Есть ли что-нибудь еще, что мне нужно сделать, чтобы соответствовать приведенной выше спецификации?

Данные представляют собой 24-байтовое значение, а результат шифрования должен быть 8 байтов, я полагаю (согласно спецификации). Я получаю на выходе целые 24 байта: (

Я написал следующий код для достижения указанной спецификации:

des.KeySize = 128;
des.Key = ParseHex(key);
des.Mode = CipherMode.CBC;
des.Padding = PaddingMode.None;

ICryptoTransform ic = des.CreateEncryptor();

CryptoOutput = ic.TransformFinalBlock(CryptoOutput, 0, 24);

Я тоже пробовал это:

MACTripleDES des = new MACTripleDES(ParseHex(key));
byte[] CDCryptp = des.ComputeHash(CryptoOutput);
6
задан Paŭlo Ebermann 22 August 2011 в 23:27
поделиться