RSA 签名机制
RSA Signature Mechanics
所以,我一直在阅读 RSA 加密,其中 public 密钥用于加密,而私钥用于解密。而对于RSA签名,私钥进行加密操作产生签名,public密钥对签名进行解密操作进行验证。
在我看来,encryption/decryption操作只是将数据转换成另一种形式,所以我想也可以通过使用私钥执行解密操作来生成签名,发件人通过使用 public 密钥执行加密操作。
总而言之:
RSA 加密 -> Public 密钥加密,私钥解密
RSA 签名 -> 私钥加密,Public 密钥解密
我的问题是这是否也有效:
RSA signing -> Private Key 对消息的 hash 进行 DECRYPTION 操作产生签名,Public Key 进行 ENCRYPTION 操作验证签名
RSA 操作只是 x^exp mod N
,其中 exp 是 public 或私有指数...当它是 public 指数 (e) 时,它被称为加密,当它是私有指数(d)它被称为解密
这是有效的,因为 x^(e*d) mod N = x
...这是因为 e 和 d 之间的特殊关系,但不是这里的主要主题...如果您需要了解更多信息,请阅读 RSA 密钥对生成
对于查看 RSA 签名的一种非常基本的方式,签名部分只是切换 e 和 d,使签名使用 d 并验证使用 e...这导致看似简单的想法说...签名只是用私钥加密...
请仔细阅读下一行:
无论您在网上的某个地方读到什么...签名和加密都不相同
是的,计算 RSA 签名涉及上面的 RSA 操作...它涉及 d...但是另一个输入有什么变化...x...它不是您要签名的消息。 .. 这是 matt 之前指出的填充结果(类似于 PADD(HASH(MESSAGE)),其中 PADD 和 HASH 是可以选择的函数)
"signing is encrypting with the private exponent" 仅勉强适用于它的数学部分,适用于密码理论部分......这种看待它的方式通常不受欢迎......对于所有实际实现来说,有很多它周围的其他东西,使签名和加密成为两个完全不同的功能......并且对于理论部分,它不够精确
所以,我一直在阅读 RSA 加密,其中 public 密钥用于加密,而私钥用于解密。而对于RSA签名,私钥进行加密操作产生签名,public密钥对签名进行解密操作进行验证。
在我看来,encryption/decryption操作只是将数据转换成另一种形式,所以我想也可以通过使用私钥执行解密操作来生成签名,发件人通过使用 public 密钥执行加密操作。
总而言之:
RSA 加密 -> Public 密钥加密,私钥解密
RSA 签名 -> 私钥加密,Public 密钥解密
我的问题是这是否也有效:
RSA signing -> Private Key 对消息的 hash 进行 DECRYPTION 操作产生签名,Public Key 进行 ENCRYPTION 操作验证签名
RSA 操作只是 x^exp mod N
,其中 exp 是 public 或私有指数...当它是 public 指数 (e) 时,它被称为加密,当它是私有指数(d)它被称为解密
这是有效的,因为 x^(e*d) mod N = x
...这是因为 e 和 d 之间的特殊关系,但不是这里的主要主题...如果您需要了解更多信息,请阅读 RSA 密钥对生成
对于查看 RSA 签名的一种非常基本的方式,签名部分只是切换 e 和 d,使签名使用 d 并验证使用 e...这导致看似简单的想法说...签名只是用私钥加密...
请仔细阅读下一行:
无论您在网上的某个地方读到什么...签名和加密都不相同
是的,计算 RSA 签名涉及上面的 RSA 操作...它涉及 d...但是另一个输入有什么变化...x...它不是您要签名的消息。 .. 这是 matt 之前指出的填充结果(类似于 PADD(HASH(MESSAGE)),其中 PADD 和 HASH 是可以选择的函数)
"signing is encrypting with the private exponent" 仅勉强适用于它的数学部分,适用于密码理论部分......这种看待它的方式通常不受欢迎......对于所有实际实现来说,有很多它周围的其他东西,使签名和加密成为两个完全不同的功能......并且对于理论部分,它不够精确