1

重複の可能性:
RSA 暗号化の問題 [ペイロード データのサイズ]

弾む城でECDSAなどを使用して、一部のデータにデジタル署名を生成するシステムが必要です。& 次に、同じ署名付きテキストを使用 & さらに、弾む城で Elgamal または RSA を使用して同じテキストを暗号化します。主な問題は、ECDSA を使用して小さなデータ ("Hello world" など) に署名した後、54 バイトの数字という非常に大きな出力が得られることです。

署名されたデータの後、データの暗号化に Elgamal または RSA を使用します...ここでは、RSA または Elgamal は 54 バイトの入力文字列全体を取得していません..32 バイトしか必要とせず、さらにテキストが切り捨てられます...

私が参照したリンク:

ECDSA 署名の場合:

http://mytenpennies.wordpress.com/2009/04/18/using-bouncycastle-net-library-for-elliptical-curve-cryptography/#comment-30

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 を使用する場合、データをどのように復号化しますか???

どうもありがとう..

4

0 に答える 0