我是否使用RSACryptoServiceProvider.SignHash来签署数据?

时间:2012-09-13 22:23:30

标签: .net security encryption sign

愚蠢的问题,但IIRC RSA只能根据其密钥大小加密有限数量的比特。非对称密码可以使用相同的密钥长度进行更多加密(并且运行得更快)。在这种情况下,我可以使用RSACryptoServiceProvider.SignHash只签署有限数量的位吗?或者签名时是否可以使用,我不需要使用AES签名? (我可以这样做,因为内容是用AES加密的。)

1 个答案:

答案 0 :(得分:3)

RSA确实只能加密有限数量的数据。 对称密码可以使用小得多的密钥长度进行更多加密,并且确实运行得更快(给定一个现代密码)。

您确实只能使用SignHash签署有限数量的数据。该方法只希望您在数据上传递哈希的字节,这些字节总是相对较小,比如大约16到64个字节(MD5到SHA512)。 RSA密钥/模数大小通常要大得多,即使RSA 1024的大小已经是128字节,但您需要从该数字中减去相当多的填充开销。

您通常不使用AES进行签名。使用对称密码进行签名称为MAC'ing,但对于签名,RSA与上述散列算法配对。

在你的情况下,我会尝试阅读更多关于密码学的内容,我会继续为特定的库提供样本。