【发布时间】:2016-07-30 19:44:20
【问题描述】:
我在 c# 中使用bouncy castle library 进行加密和解密,我想知道如何处理小于块大小的纯文本?
这是我到目前为止所做的:
AesFastEngine engine = new AesFastEngine();
GcmBlockCipher cipher = new GcmBlockCipher(engine);
AeadParameters param = new AeadParameters(new KeyParameters(key), 128, iv, null);
cipher.Init(true, parameters);
byte[] encData = new byte[plain.Length];
cipher.ProcessBytes(plain, 0, plain.Length, encData, 0);
当普通数据小于块大小时,它什么也不做。
【问题讨论】:
-
你必须在你处理的最后一个数据块上调用
doFinal(..)。 -
AES/GCM 不需要填充,它使用 CTR(计数器)模式。正如@Robert 所说,您确实需要调用
doFinal(),这是生成身份验证标签所必需的。
标签: c# encryption aes bouncycastle aes-gcm