加密公钥; 用于解密的私钥?

pal*_*now 3 encryption public-key private-key

我知道私钥和公钥在数学上是相关的,用一个密钥加密的数据只能与其他密钥相关联.我的问题是私钥总是用于加密数据,而公钥总是用来解密它?或者可以是副版本,如果是这样,你可以给出一些示例应用程序,其中它用于其他方向(公钥加密和私钥解密)?

Tho*_*nin 9

加密是对某些数据保密;数据将转换为不透明的斑点,并且反向操作需要攻击者不知道的信息,即“秘密”或“私人”信息。加密的全部要点是解密不能仅使用公共信息来完成;因此解密使用私钥。但是,让任何人加密数据都没有问题,因此加密可以使用公共密钥。

有一些算法(实际上只有一种:RSA),乍看之下似乎是“可恢复的”:您可能会考虑使用私钥进行加密,而使用公钥进行解密。如上所述,机密性很高(如果解密密钥是公开的,那么任何人都可以解密,因此加密数据不再被视为机密)。这样的“反向加密”可以用作数字签名算法的基础,其中没有机密性的概念,而是密钥所有者动作的可验证证据。

但是,RSA不仅具有模块化的幂运算功能。RSA加密首先通过称为“填充”的操作将输入消息转换为大整数。RSA签名生成首先通过另一个也称为“填充”的操作将输入消息转换为大整数;但是,这不是在所有相同的填充。填充对于安全性至关重要,并且所需的特征在加密和签名之间非常不同。例如,加密填充需要高级别的附加随机性,而签名填充则需要大量冗余(以及哈希函数,以适应较长的输入消息)。

将签名称为“使用私钥加密”是RSA标准从历史上讲的方式(因此使用了诸如“ md5WithRSAEncryption”之类的名称),但是它不准确(填充必须而且必须不同)并且过于具体(适用仅适用于RSA,不适用于El Gamal,DSA,Diffie-Hellman,NTRU ...)。这只是普遍的混乱。