如何解决Org.BouncyCastle.Crypto.DataLengthException

时间:2013-04-22 07:52:21

标签: c# .net bouncycastle

消息是

attempt to process message to long for cipher

并且完整的调用堆栈是

Org.BouncyCastle.Crypto.DataLengthException was unhandled by user code
  HResult=-2146233088
  Message=attempt to process message to long for cipher
  Source=BouncyCastle.Crypto
  StackTrace:
       at Org.BouncyCastle.Crypto.BufferedAsymmetricBlockCipher.ProcessBytes(Byte[] input, Int32 inOff, Int32 length)
       at Org.BouncyCastle.Crypto.BufferedAsymmetricBlockCipher.DoFinal(Byte[] input, Int32 inOff, Int32 length)
       at Org.BouncyCastle.Crypto.BufferedCipherBase.DoFinal(Byte[] input)
       at MyCode.Bouncy.PublicEncrypt(String value, String pubKey) in c:\MyCode\Helpers\Bouncy.cs:line 80
  InnerException: 

尝试使用公钥加密长度为360的字符串时,密钥长度为1024位

错误似乎表明使用此密钥加密的字符串长度有限制

这是对的吗?

1 个答案:

答案 0 :(得分:1)

是的,可以使用非对称密码加密的邮件大小有限制。对称密码没有这些限制。

您不应该使用非对称密码直接加密邮件。您应该使用非对称密码加密对称密钥(会话密钥或内容加密密钥),然后使用该密钥加密消息。然后,您传输加密的会话密钥和加密的消息。

接收方将使用其私钥解密会话密钥,并使用解密的会话密钥解密消息。