Шифрование Elgamal Or RSA в Bouncy Castle не требует большого участия

Возможный дубликат:
Проблема шифрования RSA [Размер данных полезной нагрузки]

Мне нужна система, в которой я генерирую цифровые подписи на некоторых данных, используя, например, ECDSA в надувном замке. & затем используйте тот же подписанный текст и далее зашифруйте тот же текст, используя Elgamal или RSA в оживленном замке. Основная проблема заключается в том, что после подписания небольших данных (скажем "Hello world") с помощью ECDSA я получаю очень большой вывод, то есть цифру 54 байта.

Теперь, после подписанных данных, я использую Elgamal или RSA для шифрования данных... Так что здесь RSA или Elgamal не принимает всю входную строку размером 54 байта... требуется всего 32 байта, а дальнейший текст усекается...

ссылки, на которые я ссылался:

для подписи ECDSA:

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

А для 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 для шифрования, как вы сделали выше... тогда как мы расшифровываем данные???

Большое спасибо..

0 ответов

Другие вопросы по тегам