Windows.Security.Cryptography.Core 中的所有对称算法名称到底是什么意思?

What exactly do all the Symmetric Algorithm Names in Windows.Security.Cryptography.Core mean?

我正在创建一个需要使用 Windows 通用 SDK 加密某些数据的应用程序。

我有代码,一切看起来都不错,我正在使用 AesCbcPkcs7 算法。我对代码没有任何问题,但我不明白 "Aes" 之后的 "CbcPkcs7" 到底是什么意思。我指的是 Windows.Security.Cryptography.Core.SymmetricAlgorithmNames
下的算法名称 像那些...

AesCbc
AesCcm
AesEcb
AesEcbPkcs7
AesGcm

AES 是一种块密码,因此可以 加密固定大小(16 字节)的块。

需要 mode of operation 才能加密多个块。例如,ECB 将分组密码按原样分别应用于明文的每个块以获取密文块。 ECB 有问题,因为它在语义上不安全,所以大多数时候使用随机初始化向量的 CBC 模式更好。更好的是像 GCM 这样的身份验证模式,它不仅提供机密性,而且 integrity/authenticity.

这仍然不够,因为像 CBC 这样的模式只能让您加密块大小的倍数的明文。需要一种填充方案来将明文填充到块大小的下一个倍数,以便加密任何长度的明文。 PKCS#7 填充通过附加字节来工作,每个字节的值表示附加的字节数。

像 CTR 和 GCM 这样的模式是流模式,因此不需要额外的填充模式来加密任意长度的明文。