我使用AuthenticatedAesCng
从该站点调用的类在 GCM 模式下使用 AES 256 加密:CLR 安全
通过加密流写入明文后,我手动连接 IV、TAG 和加密数据,然后返回该值。
cs
是加密流和内存ms
流
// Write through and retrieve encrypted data.
cs.Write(message, 0, message.Length);
cs.FlushFinalBlock();
byte[] cipherText = ms.ToArray();
// Retrieve tag and create array to hold encrypted data.
byte[] authenticationTag = encryptor.GetTag();
byte[] encrypted = new byte[cipherText.Length + aes.IV.Length + authenticationTag.Length];
// Set needed data in byte array.
aes.IV.CopyTo(encrypted, 0);
authenticationTag.CopyTo(encrypted, IV_LENGTH);
cipherText.CopyTo(encrypted, IV_LENGTH + TAG_LENGTH);
// Store encrypted value in base 64.
return Convert.ToBase64String(encrypted);
这是在 GCM 模式下使用 AES 密码的正确方式吗?我应该手动将所有这些值放在一起还是自动完成而我只是错过了它?