重複の可能性:
RSA 暗号化の問題 [ペイロード データのサイズ]
弾む城でECDSAなどを使用して、一部のデータにデジタル署名を生成するシステムが必要です。& 次に、同じ署名付きテキストを使用 & さらに、弾む城で Elgamal または RSA を使用して同じテキストを暗号化します。主な問題は、ECDSA を使用して小さなデータ ("Hello world" など) に署名した後、54 バイトの数字という非常に大きな出力が得られることです。
署名されたデータの後、データの暗号化に Elgamal または RSA を使用します...ここでは、RSA または Elgamal は 54 バイトの入力文字列全体を取得していません..32 バイトしか必要とせず、さらにテキストが切り捨てられます...
私が参照したリンク:
ECDSA 署名の場合:
RSA または Elgamal の場合: http://ox.no/posts/rsa-using-bouncycastle
サンプルコード:
Public Function Encrypt(ByVal data As Byte(), ByVal key As AsymmetricKeyParameter) As Byte()
Dim e As New ElGamalEngine()
e.Init(True, key)
Dim blockSize As Integer = e.GetInputBlockSize()
Dim output As New List(Of Byte)()
Dim chunkPosition As Integer = 0
While chunkPosition <= data.Length
Dim chunkSize As Integer = Math.Min(blockSize, data.Length - (chunkPosition * blockSize))
output.AddRange(e.ProcessBlock(data, chunkPosition, chunkSize))
chunkPosition += blockSize
End While
Return output.ToArray()
End Function
Public Function Decrypt(ByVal data As Byte(), ByVal key As AsymmetricKeyParameter) As Byte()
Dim e As New ElGamalEngine()
e.Init(False, key)
Dim blockSize As Integer = e.GetInputBlockSize()
Dim output As New List(Of Byte)()
Dim chunkPosition As Integer = 0
While chunkPosition <= data.Length
Dim chunkSize As Integer = Math.Min(blockSize, data.Length - (chunkPosition * blockSize))
output.AddRange(e.ProcessBlock(data, chunkPosition, chunkSize))
chunkPosition += blockSize
End While
Return output.ToArray()
End Function
これについて何か提案してもらえますか..
また、RSAまたはELgamalを使用するのではなく..暗号化のためにECDSAを使用できますか?...しかし、私の知る限り、ECDSAはデジタル署名用であり、暗号化用ではありません。また、上記で行ったように、暗号化に ECDSA を使用する場合、データをどのように復号化しますか???
どうもありがとう..