我正在尝试使用BouncyCastle的AES密钥包装来执行确定性加密。但是我收到以下错误:
Org.BouncyCastle.Crypto.DataLengthException: 'wrap data must be a multiple of 8 bytes'
这是我的代码:
static void Main(string[] args)
{
var txt = UTF8Encoding.UTF8.GetBytes("Some text here.");
var key = UTF8Encoding.UTF8.GetBytes("aaaaaaaaaaaaaaaa");
var encyptedBytes = Wrap(key, txt);
}
public static byte[] Wrap(byte[] kek, byte[] plaint)
{
var en = new AesWrapEngine();
en.Init(true, new KeyParameter(kek));
return en.Wrap(plaint, 0, plaint.Length);
}
public static byte[] Unwrap(byte[] kek, byte[] ciphert)
{
var en = new AesWrapEngine();
en.Init(false, new KeyParameter(kek));
return en.Unwrap(ciphert, 0, ciphert.Length);
}
如何使其适用于任何大小的输入?
请改用AESWrapPadEngine
。AESWrapEngine
实现了RFC3394
,这要求输入是块大小的倍数。AESWrapPadEngine
实现了允许输入为任意随机长度的RFC5649
。