RSA 加密方案和 RSA 签名方案是不同的,具体的不同点在 @刘巍然-学酥 的回答里讲得很清楚。我在这里主要是想谈一下加密方案里的情况。
在 RSA 加密方案中,选定了 计算出 ,再在小于 的正整数中选一个和它互素的 作为公钥,它模 的乘法逆元 则为私钥。公开 ,保留 。
结论:公钥 用来加密,私钥 用来解密。
想要反驳的是这个说法
私钥加密公钥可以解密
公钥加密私钥可以解密
两个大质数(p,q)乘积(n)难以逆向求解,所以pq是对等的,公钥和私钥也是对等的。
匿名用户:RSA的公钥和私钥到底哪个才是用来加密和哪个用来解密?
这样说的话就有三种情形。我们一一分析:
也就是说,Alice 和 Bob 同时分享一组密钥 ,然后约定 或 为加密密钥,另一个为解密密钥。这样做固然是可以的,但违背了公钥加密方案的初衷。公钥加密的设计就是为了公开加密密钥,让所有人都可以给某个人发送消息。
这种场景完全应该使用对称加密算法,加解密的效率和安全性都更高。
在这种情况下,用私钥加密公钥解密是不可能的。因为密码学的假设是:一个合格的加密方案,敌手拿到密文 不能恢复出明文 。这样做的结果是,所有人都可以解密信息,毫无意义。与之对应的有意义的是签名方案,具体参考开头我提到的刘巍然的答案。
这其实才是那个答案的意思:生成的公钥 和私钥 是对等的,只是两个数而已。把它们哪个公开出去用于加密,哪个保留起来用于解密,都是一样的。
但严格地讲,这种说法是错误的。
对于最基本的 RSA 方案(即“教科书式的 RSA 方案”),这么做是可以顺利地完成加解密的。但是仅仅是理论上成立。因为在实际中,敌手可以利用各种可能的方法去攻击我们的密码方案。而为了避免这些攻击,我们对方案中每个参数的选取都有非常严格的要求。很自然地,公钥 和私钥 的要求就是截然不同的。比如说我按照密码标准生成了密钥,把公钥留下来解密,把私钥公布出去。在敌手眼中,我的公钥其实就是私钥,但这个公钥显然是不满足密码标准的要求的,所以敌手很可能可以破解我的密码方案。
比如说,我们的私钥不能太小。因为如果 ,敌手就可以在 的线性时间内找到 。而公钥 也不能太小,但这里的不能太小只是为了抵挡广播攻击。对于 1024bit 的 ,私钥 至少是 256bit 的(关于私钥 不能太小还有一个更 trivial 的原因,敌手可以通过枚举在至多 的时间内得到 );而 取 65537 也是允许的,这里的 只有 17bit 。
如果取一个 17bit 的私钥,你还能指望你的密码方案是安全的吗?impossible。
当然你可以说,我让公钥和私钥都达到 的级别。且不说除此之外还会有别的要求,你要知道 RSA 的加解密都是要算很多大指数取模的,本来就很慢。 取 65537 就很好算(因为这数二进制就俩位置是 1),而解密的时候可以用中国剩余定理,所以省点时间(因为解密的人是允许知道 的分解的,他最后要计算的是 ,可以分别计算 再用中国剩余定理得到结果)。你这样让加密的人也得用 256bit 且不知道有几位是 1 的密钥加密,得浪费多少计算力,而且毫无意义啊。
综上所述,仅仅从最基础的原理角度,RSA 的公私钥互换也可以成功加解密。但实际上,公钥和私钥有完全不同的要求,这些要求保证了 RSA 加密方案尽可能地更安全高效。在这种情况下,公钥用来公开并加密,私钥用来保留解密,且不可互换。
也理解也不理解。
十几、二十年前左右,我还在大学里混日子。那时候也没啥智能手机,晚上熄灯后,要么睡要么就是听收音机。忘了是北京广播电台的那个频道了,节目之间有段音频片花,大致是这样的:古典的北京,“一句京剧唱腔”,现代的北京,“几句英文词儿的Rap”。好像还有几个排比句,不大记得了。
相信网友们都看出来了,问题还是在于“现代的北京”。它赤裸裸的向包括我在内的听众传递了这样的文化现代观——西方的、流行的。
也因此,网上对文科生的那种模糊的偏见我也有。你想,这些专门从事文化传播行业的人尚且如此,既不打算创造、也不打算引领,既没文化,也没有志气。
所以,我在网上碰到那些鄙视理科生没文化的观点时,我都轻轻翻过页面。毕竟,对于一个搞技术的人来说,如果鄙视我们的人能创造出有吸引力的文化作品,咱也是乐观其成呀!
这就是我不能理解的地方,按理说,文化的创造者理应在未知的、未曾到过的地方探寻不一样的可能性,从而实现自己的价值。在陈旧的、充满偏见的形式上展现自己的文化品味,看起来就像是几年前有人搞出来的比基尼京剧。
不过,实事求是的说,这种文化心理简直不要太普遍,这也不只是文化领域的问题。你看,我们搞个篮球真人秀,现场DJ都要用飙英语的方式烘托气氛。这早就是大众心理了。
所以我说,这又是能理解的。说白了,这是文化落后这个基本事实的果,而不是因。