macOS 上的 AesGcm 身份验证标记大小

在 .NET 8 及更高版本中使用 EncryptDecrypt 时,macOS 上的 AesGcm 仅支持 16 字节(128 位)身份验证标记。

旧行为

在 macOS 上,EncryptDecrypt 支持的身份验证标记大小从 12 到 16 个字节不等,前提是 OpenSSL 可用。

此外,AesGcm.TagByteSizes 属性报告它支持的大小范围为 12 到 16 个字节(含)。

新行为

在 macOS 上,EncryptDecrypt 仅支持 16 字节身份验证标记。 如果在 macOS 上使用较小的标记大小,则会在运行时引发 ArgumentException

AesGcm.TagByteSizes 属性返回值 16 作为支持的标记大小。

引入的版本

.NET 8 预览版 1

中断性变更的类型

此更改为行为更改

更改原因

macOS 上的 AesGcm 类以前依赖于 OpenSSL 来获得底层支持。 OpenSSL 是一个外部依赖项,需要独立于 .NET 进行安装和配置。 AesGcm 现在使用 Apple 的 CryptoKit 通过 Galois/Counter Mode (AES-GCM) 实现高级加密标准,以便 OpenSSL 不再是使用 AesGcm 的依赖项。

AES-GCM 的 CryptoKit 实现不支持 128 位(16 字节)以外的身份验证标记大小。

将 128 位身份验证标记与 AesGcm 配合使用,以获取 macOS 支持。

受影响的 API