24 バイトのデータ ブロックに対して次の暗号化ルールを規定するプロジェクトがあります。
1) 暗号化は、MAC アルゴリズム 3 として 9797-1 で定義されている完全なトリプル DES MAC アルゴリズムを使用して、切り捨てなしの出力変換 3 を使用し、ICV がゼロに設定されたブロック暗号として CBC モードの DES を使用して実行する必要があります。暗号化されたデータの最後の 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);