RSA可以用作加密和签名吗?

时间:2011-03-24 14:57:27

标签: encryption rsa signature

我很抱歉,但我的思绪突然变得空白......

编辑(情景)

如果我希望信息绕过像 f-ck 这样的简单过滤器,是否可以使用公钥加密信息,并使用私钥进行签名?

双方可能已经交换了公钥,甚至很难获得公钥。

编辑2

信息本身可能没有那么多凭证。

加密和签名的目的是绕过和完整。

2 个答案:

答案 0 :(得分:12)

RSA是两个算法:一个用于非对称加密,一个用于签名。碰巧两种算法都可以使用相同的私钥结构(这是一个混乱的来源:许多文档,包括RSA standard,试图将签名解释为“使用私钥加密”,即,充其量,不准确)。

对两种用法使用相同的密钥是可能的,但不是真的建议,因为两种用法之间的交互尚未得到充分的探索;此外,加密密钥和签名密钥通常具有不同的生命周期和不同的保护机制(例如,您通常希望保留私钥的备份以进行加密,以防止数据丢失:丢失私钥意味着丢失所有数据已使用该密钥加密;而您需要备份签名密钥。)

你的情景有点不清楚。非对称​​加密使用公钥,而生成签名则使用私钥。如果A想要通过加密(用于机密性)和签名(用于完整性)向B发送消息,则A将使用B知道私钥的公钥加密数据; A将使用私钥对数据进行签名,B知道公钥。这需要两个对密钥:一对用于加密和解密(A加密,B解密,B知道私钥),另一对用于签名(A符号,B验证,A知道私钥)。如果A和B都知道私钥,则它们具有共享密钥,并且使用对称加密(AES)和完整性检查({{更简单(且更快)更简单(且更快) 3}})。

标准免责声明:您似乎正在设计自己的加密协议。不要这样做。这条道路导致了无数其他聪明人偶然发现的安全故障。使用经过验证的协议,例如HMACSSL/TLS

答案 1 :(得分:-1)

是的:

  • 加密:您使用public进行加密 密钥,私密解密(显然)
  • 签名:您使用私钥加密内容摘要(哈希),使用公开验证

请参阅http://en.wikipedia.org/wiki/RSA#Signing_messages