加密和签名是两个不同的系统。在某些方面,它们的工作方向相反。
使用公钥加密,任何人都可以使用公钥加密数据。只有私钥的所有者才能解密加密消息以恢复数据。
使用签名,只有私钥的所有者才能对消息进行签名。任何人都可以使用公钥来验证消息的签名。
我对公钥/私钥的理解是,数据总是用供应商的公钥加密,他们用他们的私钥解密。
这是正确的。但它只涵盖公钥加密,而不包括签名等公钥加密的其他用途。
但是,为了验证消息是否真的来自我,我将计算消息的散列并用我的私钥加密散列(此过程也称为签名)。
实际上,这个过程应该只称为签名。称其为“用我的私钥加密”非常具有误导性:这不是它实际工作的方式。有一种流行的密钥 (RSA) 可用于签名和加密,但即使使用 RSA,签名和解密机制也不同。
为了验证消息是否来自我,供应商将使用我的公钥解密哈希并将其与未加密的哈希进行比较。如果它们匹配,供应商可以确信它来自我。
这不太正确。许多签名算法不是确定性的。验证签名不是通过反转签名过程来完成的,而是通过对签名、消息和密钥进行一些稍微不同的计算来完成的。
那么我的私钥怎么会被用来加密消息……公钥如何解密消息呢?我认为非对称密钥不允许这样做..!即公钥总是加密,私钥总是解密。任何解释将不胜感激..!
私钥用于对消息进行签名,而不是对其进行加密。公钥用于验证签名消息,而不是解密它。