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