我需要一个系统,在这个系统中我使用充气城堡中的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只适用于数字签名&amp;不适用于加密。如果我们像上面那样使用ECDSA进行加密......那么我们如何解密数据???
非常感谢..