关于身份验证:RSA签名机制

RSA Signature Mechanics

所以,我一直在读RSA加密,其中公钥用于加密,而私钥用于解密。对于RSA签名,私钥执行加密操作以生成签名,公钥对签名执行解密操作以验证签名。

在我看来,加密/解密操作只是将数据转换成另一种形式,所以我想也可以通过使用私钥执行解密操作来生成签名,发送方通过使用公钥执行加密操作来验证签名。

综上所述:RSA加密->公钥加密,私钥解密RSA签名->私钥加密,公钥解密

我的问题是这是否也有效:RSA签名->私钥对消息的哈希执行解密操作以生成签名,公钥执行加密操作以验证签名


RSA操作只是x^exp mod N,exp是公共或私有的指数…当它是公共指数(e)时,它被称为加密;当它是私有指数(d)时,它被称为解密。

这是因为x^(e*d) mod N = x…这是因为E和D之间的特殊关系,但不是这里的主要话题…如果您需要了解更多信息,请阅读有关RSA密钥对生成的信息

对于查看RSA签名的基本方法,签名部分只需切换e和d,使sign使用d并验证use e…这就引出了一个看似简单的说法……签名只是用私钥加密…

请仔细阅读下一行:

无论你在网上看到什么…签名和加密不同

是的,计算RSA签名涉及到上面的RSA操作…它涉及到D…但改变的是另一个输入…X…这不是您要签名的消息…这是Matt前面指出的填充结果(类似于padd(hash(message)),padd和hash是可以选择的函数)

"签名是用私有指数加密的"只是数学部分,加密理论部分…这种看待它的方式通常是皱眉…对于所有的实际实现,它周围都有很多其他的东西,使得签名和加密两个完全不同的函数…对于理论部分来说,它不够精确