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