我正在研究 PGP 核心加密/解密。它工作正常,我正在使用 用于加密数据的 AES 256 算法。但 AES:默认为 CBC。 我正在寻找将模式设置为“CTR”进行加密,但没有找到任何方法。 下面是我用于加密数据的代码。
private static void EncryptFile(string inputFile, string outputFile, string publicKeyPath) {
using (Stream outputStream = File.Create(outputFile))
using (Stream inputStream = File.OpenRead(inputFile))
using (Stream publicKeyStream = File.OpenRead(publicKeyPath))
{
PgpPublicKey publicKey = ReadPublicKey(publicKeyStream);
PgpEncryptedDataGenerator encryptedDataGen = new PgpEncryptedDataGenerator(SymmetricKeyAlgorithmTag.Aes256, true, new SecureRandom());
encryptedDataGen.AddMethod(publicKey);
using (Stream compressedDataStream = encryptedDataGen.Open(outputStream, new byte[4096]))
using (Stream compressedData = new PgpCompressedDataGenerator(CompressionAlgorithmTag.Zip).Open(compressedDataStream))
{
inputStream.CopyTo(compressedData);
}
}
}
你能帮我找到方法吗?
提前致谢
Bouncy Castle 的 PGP 类使用的 OpenPGP 标准不支持将密码模式更改为 CTR。要在 CTR 模式下使用 AES-256,您需要使用较低级别的加密 API,但这意味着放弃 PGP 兼容性和功能。