RSA 可以做私钥加密,公钥解密吗?解密的结果还是加密之前的明文吗?

2019-03-09 16:01:37 +08:00
 GuguguguDa

下面这个博客看的我很疑惑啊

先不论私钥加密,公钥解密有没有意义

私钥加密的结果,用公钥解密,还能解出来的吗?我试了下,居然还真可以?

https://blog.csdn.net/wangqiuyun/article/details/42143957

13716 次点击
所在节点    程序员
49 条回复
sirgod
2019-03-09 16:14:30 +08:00
RSA 公钥跟私钥的作用是互逆的
bzj
2019-03-09 16:25:35 +08:00
先了解 RSA 的原理再来讨论有没有意义
sadan9
2019-03-09 16:32:35 +08:00
数字签名了解一下
LxExExl
2019-03-09 16:33:25 +08:00
可不可以做? 可以做

现实中有没有人这么做? 没有

为啥呢? 因为加解密的对象不同。私钥持有者解密之后得到明文。公钥持有者解密之后得到摘要。不确切滴说,明文是肉眼看得懂的,摘要是肉眼看不懂的。
3dwelcome
2019-03-09 16:34:34 +08:00
rsa 有两种应用,加密和签名,加密很有意义的,很多游戏数据加密就是用 RSA 配合 aes 来做的。
lhx2008
2019-03-09 16:38:54 +08:00
可以,有意义,可以验证是否是私钥加密的
python35
2019-03-09 16:40:59 +08:00
rsa 算法秘钥有公钥和私钥,公钥是公开的,私钥是不公开的
公钥加密的只有私钥持有者才能查看原文
私钥加密的对应的公钥就能解开,但是公钥是公开的,所以所有持有公钥的人都能解开,这个严格意义上不算加密解密,而是私钥签名,公钥验签的过程
GuguguguDa
2019-03-09 16:44:28 +08:00
@LxExExl 诶?我试过,私钥加密,公钥解密,解密出来的是明文而不是摘要
是加密的算法和签名的算法不一样导致的吧
ThirdFlame
2019-03-09 16:49:20 +08:00
当然可以。
明文--公钥加密---密文--私钥解密---明文
明文--私钥加密---密文--公钥解密---明文

明文的哈希--私钥加密---签名---公钥解密----明文的哈希,若哈希值和明文的哈希值相同,则证明 明文的发送者,是私钥的持有者。

不知道楼主看懂了没。 rsa 本身公钥 和 私钥 在加解密时,是可以互逆的。 根据加密的内容 和 方向不同,形成了 加密和 签名等用法。
weyou
2019-03-09 16:49:30 +08:00
@3dwelcome 签名其实也是加密,只是加密的对象是数字摘要。

就 RSA 算法而言,私钥公钥是完全对等的,一个用作加密,另一个就可以解密。但实际应用中,为了性能考虑,对私钥公钥有不同的要求,比如 openssl 的公钥中的 e 就简单取了 65537,就是为了计算方便。这时候公钥私钥就最好不要互换。否者安全性得不到保证。
3dwelcome
2019-03-09 17:09:09 +08:00
@weyou 据我了解,签名和加密是不太一样的。加密过程会填充随机 padding,以确保同一个数据,每次 RSA 加密的结果不同,提高破解难度。而签名刚好相反,需要每次结果都有一致性,已判断保护的数据块是否被篡改。
GuguguguDa
2019-03-09 17:17:10 +08:00
@3dwelcome 你可以试试 明文使用私钥进行加密,每次加密的结果是一样的,使用公钥加密,加密的结果是不一样的
ThirdFlame
2019-03-09 17:28:19 +08:00
@GuguguguDa openssl 使用私钥 加密时有填充选项。有的填充模式 就如,@3dwelcome 所说的那样。
CEBBCAT
2019-03-09 17:44:05 +08:00
在俺的理解里,公钥和私钥并没有本质上的不同,当你选择了其中一把作为私钥,另一把自动成为公钥,反之亦然
dryadent
2019-03-09 17:55:35 +08:00
确实可以私钥加密,公钥解密。但是从 RSA 方案的设计角度来说,私钥加密,公钥解密这种方式安全性并无法得到保证,具体的你可以搜一下
vinguo
2019-03-09 17:56:50 +08:00
楼主培训班出身?
chinvo
2019-03-09 18:03:50 +08:00
搜一下可好?这个问题论坛里讨论不止一次了
GuguguguDa
2019-03-09 18:03:51 +08:00
@vinguo 虽然我不是 但我觉得培训班出身的人应该比你强
CEBBCAT
2019-03-09 18:05:21 +08:00
@CEBBCAT #14 好吧,我查了查( https://segmentfault.com/q/1010000002932436 ),本质上是一样的,但是 openssl 会把还多隐秘性的要素存进私钥的 pem,所以不能像我说的那样随意互换
weyou
2019-03-09 21:46:53 +08:00
@3dwelcome 并不是签名不可以加随机 padding,是没有必要。实际上加了 padding 也不应影响签名验证的结果,因为验证过程其实就是解密后比较 hash 值的过程,而 padding 并不会影响解密的结果。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/542814

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX