0

バウンシーキャッスルを使用してRSAを実験しています。これは一般的な規則とは逆であることは知っていますが、私の理解では、理論的にはまだ機能するはずです。

RSA 秘密鍵を使用して一部のデータを暗号化します。暗号化されるデータの長さは 294 バイトです。暗号化関数は 512 バイトを出力します。次に、上記の出力暗号文と対応する公開鍵を渡して、復号化メソッドを呼び出します。私の問題は、暗号化関数への実際の入力が 294 バイトであるのに対し、復号化では常に 255 バイトのバッファーが返されることです。この理由は何ですか?

以下は、暗号化関数と復号化関数のソース コードです。

public static byte[] RSAEncrypt(byte[] data, AsymmetricKeyParameter key)
        {
            try
            {
                RsaEngine e = new RsaEngine();
                e.Init(true, key);

                int blockSize = e.GetInputBlockSize();

                List<byte> output = new List<byte>();

                for (int chunkPosition = 0; chunkPosition < data.Length; chunkPosition += blockSize)
                {
                    int chunkSize = Math.Min(blockSize, data.Length - (chunkPosition * blockSize));
                    output.AddRange(e.ProcessBlock(data, chunkPosition, chunkSize));
                }

                return output.ToArray();
            }
            catch (Exception ex)
            {

                return null;
            }
        }


public static byte[] RSADecrypt(byte[] data, AsymmetricKeyParameter key)
        {
            try
            {
                RsaEngine e = new RsaEngine();
                e.Init(false, key);

                int blockSize = e.GetInputBlockSize();

                List<byte> output = new List<byte>();

                for (int chunkPosition = 0; chunkPosition < data.Length; chunkPosition += blockSize)
                {
                    int chunkSize = Math.Min(blockSize, data.Length - (chunkPosition * blockSize));
                    output.AddRange(e.ProcessBlock(data, chunkPosition, chunkSize));
                }

                return output.ToArray();
            }
            catch (Exception ex)
            {

                return null;
            }
        }
4

1 に答える 1