我有一个项目,它为 24 字节数据块规定了以下加密规则。
1) 加密应该使用 9797-1 中定义的完整三重 DES MAC 算法作为 MAC 算法 3 进行,输出转换 3 没有截断,并且 CBC 模式下的 DES 作为 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);