一、公钥加密
让我想想。 我找了一个是1,另一个是2的数字。 我喜欢2这个数字,所以我不告诉你们(私钥)而是留下来。 然后,我会告诉大家1是我的公钥。
我有文件,不能给别人看,所以用1加密了。 别人找到了这个文件,但他不知道2是解密的私钥,所以他解不开。 只有我可以用数字2,也就是我的私钥解密。 这样可以保护数据。
我的zxddyx用我的公钥1加密字符a,加密成b,放在网上。 别人偷了这个文件,但别人解不开。 因为别人不知道2是我的私钥,所以只有我能解密,解密后得到a。 这样就可以发送加密的数据了。
二、私钥签名
如果我用私钥加密数据(当然,只有我能用私钥加密。 因为只有我知道2是我的私钥),所有人都会看到我的内容。 因为他们知道我的公钥是1,所以这个加密有什么用呢?
但我的zxddyx说有人冒充我给他发了信息。 我该怎么办? 我要寄的信,内容是c,用我的私钥2加密。 加密的内容是d,发送到x,解密后告诉你是否是c。 他用我的公钥1解密,发现还是c。
此时,他认为能用我的公钥解密的数据,必然是用我的私钥加密的。 我知道只有我有私钥,所以他可以确认确实是我发的。 这样就可以确认发货人的身份了。 这个过程称为数字签名。 当然具体的过程有点复杂。 用私钥加密数据。 用途是数字签名。
总结:公钥和私钥是成对的,相互解密。
公钥加密、私钥解密。
私钥的数字签名、公钥的验证。
举个例子
例如,有两个用户时尚的金鱼和ddh,时尚的金鱼想用双重密钥加密技术把明文发送到ddh。 ddh有一对公钥和私钥。 加密的解密过程如下。
DH把他的公钥发给时尚金鱼。
时尚金鱼用ddh的公钥加密她的信息,发送到ddh。
DH用他的私钥解密了时尚金鱼的信息。
上面的过程可以如下图所示,时尚金鱼用ddh的公钥加密,ddh用自己的私钥解密。
示例和图示根据《网络安全基础 应用与标准第二版》
RSA算法
RSA公钥加密算法由Ron Rivest、Adi Shamirh和LenAdleman (麻省理工学院)于1977年开发。 RSA因开发他们三人的名字而得名。 RSA是目前最具影响力的公钥加密算法,能够抵抗所有已知的密码攻击,被ISO推荐为公钥数据加密标准。 RSA算法基于非常简单的数论事实。 将两个大素数相乘非常容易,但对其乘积进行因式分解非常困难,所以可以公开乘积作为密钥。
在openssl中,如果知道私钥,则可以直接使用以下命令生成公钥:
RSA-in RSA _ private _ key.PEM-pub out-out RSA _ public _ key.PEM
所以,如果你公开了私钥,说明公钥也告诉了他们
公钥由私钥生成