1

特定の間隔で SFTP へのサービスをサーバーに書き込み、ディレクトリ内のすべてのファイルをダウンロードしてから、それらを復号化して処理しようとしています。

復号化メソッドはある時点で機能していましたが、それ以来変更していません。正常に機能したときと同じキーをまだ使用しています。

ここにある BouncyCastle の PGPEncrypt、PGPDecrypt、および PGPEncryptionKeys クラスを使用しています: https://github.com/sledwith/PGP-Decryption-With-C-Sharp

さらに、ここに示すようにコードを変更しました: BouncyCastle PGP を使用してファイルを復号化する際の例外

お気づきの場合は、コードがどのように修正され、復号化が機能したかについてコメントしました。

今、そうではありません。

なぜこれが起こったのか、またはどうすれば修正できるのか、誰かが洞察を持っていますか?

4

3 に答える 3

2

1024 ビットの RSA 公開/秘密キーを使用して、128 バイトの何かを暗号化しようとしていると思いますか? 私が正しければ、より大きな RSA キーを使用してください (RSA 4096 では最大 500 バイトまで暗号化できます)。

リンクされた投稿で、これは散発的であるとあなたが言っていることに注意してください。いくつかのグーグルは、暗号化されるバイトに先行ゼロがある場合、完全な 128 バイトを処理できる可能性があることを示しています。

また、キーペアで「データ」を暗号化するだけの場合は、これらの制限 (RSA 2048 の場合は 240 バイト程度、RSA 4096 の場合は 500 バイト程度) を超過しないことを確認する必要があります。すべてのデータの対称キー暗号化を実装し、RSA キーを使用してキーを暗号化/復号化することをお勧めします。

于 2013-10-01T19:43:19.043 に答える
0

PGP プロセスを明示的に使用することに固執していない場合は、ここで私のライブラリを使用できます。

https://github.com/zenith-nz/ObscurCore

その「バナー機能」はまだ完全には有効になっていませんが (一種の暗号化されたアーカイブを作成します)、必要なことはすべて実行するようです - ECDHC スキーム UM1 を使用して鍵を導出し、多種多様なブロックを実装しますそしてストリーム暗号。BouncyCastle の上に構築されています。

于 2013-10-06T23:02:05.187 に答える
-1

この問題は解決したと思います。このコードを試してください。

public string StringToDecrypt(string text)
{
    byte[] toDecrypt = Convert.FromBase64String(text);
    AsymmetricCipherKeyPair keyPair;

    using (var reader = File.OpenText(@"Private Key File Path"))
    {
        keyPair = (AsymmetricCipherKeyPair) new PemReader(reader).ReadObject();   
    }

    var engine = new RsaEngine();
    engine.Init(false, keyPair.Private);

    return Encoding.UTF8.GetString(engine.ProcessBlock(toDecrypt, 0, toDecrypt.Length));
}
于 2015-04-21T07:42:43.660 に答える