rsa加密算法详解
提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加
—本文只对加密解密流程进行介绍,不研究技术层实现。
提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档
前言
提示:这里可以添加本文要记录的大概内容:
rsa加密算法是目前普遍使用的算法,除非量子计算机得到广泛发展,否则理论上无法被暴力破解。本文只对加密解密流程进行介绍,不研究技术层实现。
提示:以下是本篇文章正文内容,下面案例可供参考
一、rsa加密是什么?
RSA公开密钥密码体制是一种使用不同的加密密钥与解密密钥,“由已知加密密钥推导出解密密钥在计算上是不可行的”密码体制 。
在公开密钥密码体制中,分为公钥和私钥一对钥匙。其中的加密密钥(即公开密钥)PK(public key)是公开信息,而解密密钥(即秘密密钥)SK(secret key)是需要保密的。加密算法E和解密算法D也都是公开的。虽然解密密钥SK是由公开密钥PK决定的,但却不能根据PK计算出SK。
二、使用步骤
1.生成密钥
加密过程中,首先分为服务端和客户端两种角色,以下成为服务端A和客户端B。
服务端会生成一对密钥,公钥PK和私钥SK,当客户端有数据交互需求时,A会将PK分发给所有客户端B1、B2…Bn。但SK是由A妥善保管的。
2.数据加密
给B分发公钥PK后,A才会给B传数据,A首先生成数据摘要,将摘要用私钥加密生成数字签名,再附到数据底部,整个数据加密后发给客户B。
3.数据解密
客户收到数据后,用公钥解密,完成传输。
CA认证中心
但是仅仅这样是不够的,作为客户端,我无法知道发给我的公钥是真的还是假的,因此需要找个公证处认证一下。这里就要提到CA(certificate authority)的概念,其实CA认证中心可以看作一个服务端A,但他传输的数据都是别人的公钥,他也会生成自己的公钥PK2和私钥SK2,然后将公钥发给所有客户B,当有其他的服务端A想找ca做认证时,ca会将A的公钥PK1和一些相关信息进行加密(用ca的SK),我们把A被ca加密后的公钥叫做 "数字证书 " 。
这样,只需要A发送加密后数据时,将数字证书附上,B收到数据后,就可以通过ca的公钥PK2将数字证书解密,这样B就认为不会有问题了,因为我解密数据的PK1是CA官方认证过的,肯定没有问题。