我基本上想知道是否可以使用 .NET Standard 库完成以下序列:
var mac = new Org.BouncyCastle.Crypto.Macs.CMac(new BouncyCastleAES());
var cmacBytes = new byte[mac.GetMacSize()];
mac.Init(new BouncyCastleAESKey(key));
mac.BlockUpdate(data, 0, data.Length);
mac.DoFinal(cmacBytes, 0);
//Heres the result we're looking for...
Console.WriteLine(cmacBytes);
我注意到AesCcm所以充满希望。看来使用此类获取 CMAC 是不可能的。
这通过采摘得到加强
我们没有办法用当前的提案做 CMAC,但没关系,因为我们没有办法在平台上做 CMAC。
来自https://github.com/dotnet/runtime/issues/1813#issuecomment-575371385讨论相关(未解决)问题。
虽然有AES CMAC Calculation C#解释该方法,当然还有Bouncy 代码。所以看起来有一种简单/易于理解的方法,但也许我只是想确保自己有外部意见,即没有一些直接的方法潜伏在表面之下或其他容易咬人的东西。:)