我对BouncyCastle有一个特殊的问题。
正在发生的事情是我正在使用公钥来加密文本文件,然后将其传输给第三方。当他们尝试在文件结束时自动解密文件时(使用Globalscape - 不确定版本),该过程失败,要求使用密码来解锁密钥。
如果我执行相同的过程,但使用GPG4Win使用相同的密钥加密文件,则不会出现同样的问题。
这是执行加密的代码:
private static bool EncryptFile(Stream outputStream, string fileName, PgpPublicKey encKey, bool withIntegrityCheck)
{
try
{
var bytes = PgpUtils.CompressFile(fileName, CompressionAlgorithmTag.Uncompressed);
// encrypt using AES-256
var encryptedDataGenerator = new PgpEncryptedDataGenerator(SymmetricKeyAlgorithmTag.Aes256, withIntegrityCheck, new SecureRandom());
encryptedDataGenerator.AddMethod(encKey);
using (var cOutStream = encryptedDataGenerator.Open(outputStream, bytes.Length))
{
cOutStream.Write(bytes, 0, bytes.Length);
}
return true;
}
catch (Exception e)
{
Trace.TraceError($"Exception in EncryptFile: {e}");
return false;
}
}
我承认我在这里有点失落。任何人都可以指出我错过了什么?或者我应该要求第三方进一步挖掘?
干杯
答案 0 :(得分:0)
这是解决潜在问题的更高层次方法:
您正在使用公钥进行加密。这意味着收件人需要匹配的私钥。
看起来就像收件人有密钥一样,因为客户端应该抱怨丢失的私钥,而不是关于密钥的密码短语。
检查以下内容(从容易到不容易)