所以,我一直在阅读RSA加密,其中公钥用于加密,而私钥用于解密。并且对于RSA签名,私钥执行加密操作以产生签名,并且公钥对签名执行解密操作以验证它。
在我看来,加密/解密操作只是将数据转换为另一种形式,所以我猜也可以通过使用私钥执行DECRYPTION操作来生成签名,并且发送方通过执行ENCRYPTION操作来验证签名使用公钥。
总结如下:
RSA加密 - >公钥加密,私钥解密
RSA签名 - >私钥加密,公钥解密
我的问题是这是否也有效:
RSA签名 - >私钥对消息的散列执行DECRYPTION操作以生成签名,公钥执行ENCRYPTION操作以验证签名
答案 0 :(得分:1)
RSA操作只是x^exp mod N
,其中exp是公共或私有指数...当它是公共指数时(e)它被称为加密,当它是私有指数时(d)它是叫做解密
这是有效的,因为x^(e*d) mod N = x
...这是有效的,因为e和d之间的特殊关系但不是这里的主要话题...如果您需要了解更多,请阅读RSA密钥对生成
只是一种看待RSA签名的非常基本的方式,签名部分只是切换e和d,使得签名使用d并验证使用e ...这导致看似简单的说法......签名是只需用私钥加密......
请仔细阅读下一行:
无论你在网上某处读到什么...... SIGN和ENCRYPT都不是同样的
是的,计算一个RSA签名涉及上面的RSA操作......它涉及d ......但是另一个输入有什么变化... x ...它不是你要签名的消息......它是padding结果,如前面指出的mat(类似于PADD(HASH(MESSAGE)),PADD和HASH是可以选择的函数)
"签名是使用私有指数进行加密"对于加密理论部分来说,它只是勉强适用于它的数学部分......这种看待它的方式通常是不受欢迎的...对于所有实际的实现,它周围还有许多其他的东西,这使得符号和加密两个完全不同的函数......对于理论部分,它不够精确