У меня есть проект, который предусматривает следующие правила шифрования для 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);