openssl加密库说明(短文真够劲儿openssl生成公钥私钥)
openssl加密库说明(短文真够劲儿openssl生成公钥私钥)生成公钥。公钥要用刚才生成的私钥生成。公钥可以在网络上进行传输而不担心其泄露。好比一把钥匙一把锁。单独把钥匙拿走或者把锁拿走,找不到另一半,加密的字符串,是不能被破解的。运行上述指令。将会在当前目录中生成一个 RSA.private 文件。至于为什么叫这个名字?因为好记。本质上这是一个文本文件。openssl genrsa -out rsa.private 1024想要生成长度。更小的密钥,把后面的1024改为512就可以啦!理论上可以调整为比512更小的数值,但是不推荐。仅支持512,758,1024,1536,2048几个固定的数值长度不要随便写哦。俗话说,一寸长一寸强,一寸短一寸险。字符串长度越长,加密强度越大,破解的难度就越高。
我是@程序员小助手 Rman,继Xman,Ironman,Superman之后又一个实力派man。
引言
要在Windows或Linux上执行以下操作,必须在系统上安装OpenSSL。
Linux
先从Linux说,因为用处最多,OpenSSL也是从这儿来的。
生成私钥,只需执行下面一行指令:
openssl genrsa -out rsa.private 1024
想要生成长度。更小的密钥,把后面的1024改为512就可以啦!
理论上可以调整为比512更小的数值,但是不推荐。仅支持512,758,1024,1536,2048几个固定的数值长度不要随便写哦。
俗话说,一寸长一寸强,一寸短一寸险。字符串长度越长,加密强度越大,破解的难度就越高。
运行上述指令。将会在当前目录中生成一个 RSA.private 文件。至于为什么叫这个名字?因为好记。本质上这是一个文本文件。
生成公钥。公钥要用刚才生成的私钥生成。公钥可以在网络上进行传输而不担心其泄露。好比一把钥匙一把锁。单独把钥匙拿走或者把锁拿走,找不到另一半,加密的字符串,是不能被破解的。
openssl rsa -in rsa.private -out rsa.public -pubout -outform PEM
同样的道理,执行上述指令将会在当前目录中生成一个 rsa.public 文件。文件内容就是公钥。
windows
OpenSSL也提供了windows下的安装包。同样需要在cmd命令行执行下面的指令。生成的步骤和方法与Linux下相同。我们不过多赘述。下面是两条指令,按顺序执行就可以了。
openssl.exe genrsa -out rsa.private 1024
openssl.exe rsa -in rsa.private -out rsa.public -pubout -outform PEM
没有什么好说的,一模一样。
实操
光说不练假把式,我们用上述指令生成一对公钥和秘钥。看看他们都长什么样。为了普遍用途起见,我们使用1024位加密长度。
下面生成的这个是私钥。
-----BEGIN RSA PRIVATE KEY-----
MIICXgIBAAKBgQDbSmlzll/Wshw06S4DdhwwcWsa nSibfjwaq888CPNic0/7Xq7
VRytNerQeDW8G3todF6fMJSIroFRd0v7Af12P7qXubOqJts/NLA7/W3GhJ8wt2T8
L0ThYzb2S8GyRGHsP/iGemVx3UuB1ajRhUBJfsi5yQw8LqT5hEYG4nk0twIDAQAB
AoGACpjS9bn7kaVzxX7LMXGgtRqWAWy /CZyVDPjmf9Ey6bwGzm/p5PaWeh0G3Tj
q95sHUUaWXkAhIZiS2yHaG7VL63BtBsXa/5NLPIRO7aXeNVRScWGzrxyd3SBscgb
KLXId/OvvhrH57MvEjF Anqk4Gh 2FspfBKOJdwAYucIklECQQD4jE40Vown3pO5
l9fBeZu2f1OxDoaONhoJGBSzaFZf7OrAF6DjTviWKVs5XOwpMTdac8nNx/TBTTw
/KxiwklfAkEA4d2LqM6Zxk8ZoyyeIA0cRarj1GqlivlI7jIYqK6nO eRiE9VGSX0
dgkP2ctfckJlXtW3o9FQjt7wv QoWR5bqQJBAMhK4NbCjA2xCyC74Y2zfy0xLHN5
fitqI88CTeRKB5kj5gVIxUmIoUD5MN9oJ5QGalIFDzI6md2QbSVhH1YytUcCQQC8
QGop3WC/r6f/n61/q024J1HS9rxZU6LcnTZ SWurezuKMA0Oc9sIEk96yI4Z7osM
vYffNM28UwZs/GJLctZAkEAu0HGDVmwc8ZZPXi5f6SfKteOS6dBm7jc6ZEUqTtc
6XckXhra2gsrMwpbswsSQ/Eh4u3TfeXW9AJXsmhAaXQsuw==
-----END RSA PRIVATE KEY-----
下面这行是用私钥生成的公钥文件内容:
-----BEGIN PUBLIC KEY-----
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDbSmlzll/Wshw06S4DdhwwcWsa
nSibfjwaq888CPNic0/7Xq7VRytNerQeDW8G3todF6fMJSIroFRd0v7Af12P7qX
ubOqJts/NLA7/W3GhJ8wt2T8L0ThYzb2S8GyRGHsP/iGemVx3UuB1ajRhUBJfsi5
yQw8LqT5hEYG4nk0twIDAQAB
-----END PUBLIC KEY-----
是不是超级简单快捷,就拥有了一对儿高强度的加密字符串?
写在最后
在应用程序中接口数据不想暴露给外部访问,但是又不想做单向加密,那么RSA的公钥私钥就派上大用场了,不对称加密就是这么好使。
Happy coding :)