BouncyCastle加密文件强制输入密码

时间:2017-03-07 05:27:55

标签: c# bouncycastle public-key-encryption

我对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;
            }
        }

我承认我在这里有点失落。任何人都可以指出我错过了什么?或者我应该要求第三方进一步挖掘?

干杯

1 个答案:

答案 0 :(得分:0)

这是解决潜在问题的更高层次方法:

您正在使用公钥进行加密。这意味着收件人需要匹配的私钥。

看起来就像收件人有密钥一样,因为客户端应该抱怨丢失的私钥,而不是关于密钥的密码短语。

检查以下内容(从容易到不容易)

  • 收件人输入密码时可以解密吗?如果是,请配置客户端以保存密码。
  • 尝试使用您当地的gpg解密
  • 您确定客户端有私钥吗?如果没有,请确保客户端具有私钥(可能您使用不同的密钥与您的代码和gpg4win)
  • 客户端是否可以处理加密方法 ?即客户端是否知道如何解密您发送的消息格式?(“它曾经有效吗?” - 我没有使用Globalscape的经验)