4

BouncyCastle を使用した RSA 暗号化と復号化に関する多くのトピックがありますが、予期しない動作に遭遇しています。

サイズが 64 バイトの秘密鍵を使用して、64 バイトのデータ ブロッキングを暗号化しようとしています

RSA 暗号化を次のように計算します。

public byte[] Encrypt(byte[] data, AsymmetricKeyParameter key)
{
    var engine = new RsaEngine();
    engine.Init(true, key);
    var blockSize = engine.GetInputBlockSize();
    return engine.ProcessBlock(data, 0, blockSize );
}

次のように公開鍵を使用して復号化を計算します

public byte[] Decrypt(byte[] data, AsymmetricKeyParameter key)
{
    var engine = new RsaEngine();
    engine.Init(false, key);
    var blockSize = engine.GetInputBlockSize();
    return engine.ProcessBlock(data, 0, blockSize );
}

私が見つけたのは、64バイトの秘密鍵を使用して64個のデータを暗号化すると、64バイトの暗号化されたdataBlockが返されることです。

ただし、64 バイトの公開鍵を使用して 64 バイト配列をデコードすると、サイズが 62 バイトのデータ ブロックが返されます。奇妙なことに、62 バイト配列に含まれる値は 64 バイトの元の配列 (暗号化前) の値と同じですが、デコードされた配列には元のデータの最初のインデックスと最終インデックスがありません。

さまざまなキーとさまざまなデータ セットを使用してみましたが、同じことが起こります。

私は何か間違ったことをしているに違いないのですが、私には見えません。

乾杯。

4

1 に答える 1