我知道私钥和公钥在数学上是相关的,用一个密钥加密的数据只能用另一个密钥解密。我的问题是私钥总是用于加密数据,而公钥总是用于解密数据?或者可以反过来,如果是这样,您能否给出一些在其他方向使用的示例应用程序(用于加密的公钥和用于解密的私钥)?
加密是关于对某些数据保密;数据被转换为不透明的 blob,并且反向操作需要攻击者不知道的东西,即“秘密”或“私人”信息。加密的全部意义在于解密仅靠公开信息是无法完成的;因此解密使用私钥。然而,让任何人加密数据是没有问题的,因此加密可以使用公钥。
有一些算法(实际上只有一种:RSA)乍一看似乎是“可逆的”:您可能会考虑使用私钥进行加密,使用公钥进行解密。如上所述,存在机密性(如果解密密钥是公开的,那么任何人都可以解密,因此加密的数据不能再被视为机密)。这种“逆向加密”可以用作数字签名算法,其中没有机密性的概念,而是密钥所有者行为的可验证证据。
HoweverRSA 的意义不仅仅是模幂。 RSA加密首先通过称为“填充”的操作将输入消息转换为大整数。 RSA签名生成首先通过另一个操作(也称为“填充”)将输入消息转换为大整数;but这不是at all相同的填充。填充对于安全性至关重要,并且加密和签名所需的特性截然不同。例如,加密填充需要高水平的附加随机性,而签名填充需要大量冗余(以及哈希函数,以便容纳长输入消息)。
将签名称为“使用私钥加密”是 RSA 标准历史上的说法(因此名称为“md5WithRSAEncryption”),但它不准确(填充是而且必须是不同的)并且过于具体(它适用于仅适用于 RSA,不适用于 El Gamal、DSA、Diffie-Hellman、NTRU...)。这只是一个普遍存在的困惑。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)