RSA公钥加密算法是非对称算法,加密和解密使用的不是同一个密钥,通常有两个密钥,分别为公钥和私钥,公钥用于加密,传输数据前可以使用公钥对数据进行加密,该密钥可以对外公布,私钥则用于解密,接收到数据后可以使用私钥对其进行解密,该密钥不对外公布。由于加密和解密的密钥不同,因此数据在传输过程中的安全性得到了极大的保障,生成RSA公钥和私钥的方法很多,最简单的莫过于借助于OpenSSL了,下面我们就看看如何借助OpenSSL生成RSA的公钥和私钥吧。
首先自然是要安装OpenSSL了,linux下安装OpenSSL很简单,以centos为例,yum install openssl就OK了,很简单,有某有。windows下能否安装呢,相信不少人会有这样的疑问,其实windows下也可以使用OpenSSL,主要是不少朋友可能找不到在哪里下载,下面小编就提供一个下载地址,32位和64位都有,可以根据需求下载对应的版本,小编下载的32位的,在xp可以正常使用。
安装完成我们打开OpenSSL,linux在命令行下输入openssl,windows的话解压缩文件后找到bin文件夹,下面有openssl.exe文件,双击打开即可,windows下打开的时候会出现一个warning,可以不用理会,并不影响我们使用它生成公钥和密钥。进入OpenSSL界面后linux和windows的操作都一样,下面就不在分别介绍了。
生成私钥
生成私钥我们需要借助于OpenSSL的genrsa命令,如果想要了解该命令如何使用,可以输入genrsa --help(有些命令help确实是真实存在的参数,用于显示该命令的帮助信息,有些则不存在,genrsa就不存在help参数,不过这并不影响我们看该命令的用法),此时我们就可以看到该命令的用法以及可以附加的参数。
genrsa:只输入genrsa,默认生成512bit的私钥,在终端直接输出。
genrsa -out private_key.pem 1024:指定输出文件和生成的私钥位数,生成1024bit的私钥到private_key.pem文件中
生成公钥
公钥的生成则是建立在私钥的基础上,生成公钥的命令为rsa。
rsa -in private_key.pem -pubout -out public_key.pem:-in private_key.pem代表输入私钥,-pubout代表输出一个公钥,-out public_key.pem代表了输出公钥到指定的文件,其中-pubout不能省略,否则输出的还是私钥。
至此,RSA加密算法需要的公钥和私钥都已经生成完毕。借助于OpenSSL的帮助,我们能够很轻松的完成公钥和私钥的生成,当然生成不是目的,使用才是目的,那么RSA加密到底用在什么地方,如何使用,小编会在接下来的文章中详细解释,童鞋们,敬请期待吧。