我是@程序員小助手 Rman,繼Xman,Ironman,Superman之後又一個實力派man。
引言
要在Windows或Linux上執行以下操作,必須在系統上安裝OpenSSL。
Linux
先從Linux說,因為用處最多,OpenSSL也是從這兒來的。
生成私鑰,只需執行下面一行指令:
<code>openssl genrsa -out rsa.private 1024/<code>
想要生成長度。更小的密鑰,把後面的1024改為512就可以啦!
理論上可以調整為比512更小的數值,但是不推薦。僅支持512,758,1024,1536,2048幾個固定的數值長度不要隨便寫哦。
俗話說,一寸長一寸強,一寸短一寸險。字符串長度越長,加密強度越大,破解的難度就越高。
運行上述指令。將會在當前目錄中生成一個 rsa.private 文件。至於為什麼叫這個名字?因為好記。本質上這是一個文本文件。
生成公鑰。公鑰要用剛才生成的私鑰生成。公鑰可以在網絡上進行傳輸而不擔心其洩露。好比一把鑰匙一把鎖。單獨把鑰匙拿走或者把鎖拿走,找不到另一半,加密的字符串,是不能被破解的。
<code>openssl rsa -in rsa.private -out rsa.public -pubout -outform PEM/<code>
同樣的道理,執行上述指令將會在當前目錄中生成一個 rsa.public 文件。文件內容就是公鑰。
windows
OpenSSL也提供了windows下的安裝包。同樣需要在cmd命令行執行下面的指令。生成的步驟和方法與Linux下相同。我們不過多贅述。下面是兩條指令,按順序執行就可以了。
<code>openssl.exe genrsa -out rsa.private 1024 openssl.exe rsa -in rsa.private -out rsa.public -pubout -outform PEM/<code>
沒有什麼好說的,一模一樣。
實操
光說不練假把式,我們用上述指令生成一對公鑰和秘鑰。看看他們都長什麼樣。為了普遍用途起見,我們使用1024位加密長度。
下面生成的這個是私鑰。
<code>-----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-----/<code>
下面這行是用私鑰生成的公鑰文件內容:
<code>-----BEGIN PUBLIC KEY----- MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDbSmlzll/Wshw06S4DdhwwcWsa +nSibfjwaq888CPNic0/7Xq7VRytNerQeDW8G3todF6fMJSIroFRd0v7Af12P7qX ubOqJts/NLA7/W3GhJ8wt2T8L0ThYzb2S8GyRGHsP/iGemVx3UuB1ajRhUBJfsi5 yQw8LqT5hEYG4nk0twIDAQAB -----END PUBLIC KEY-----/<code>
是不是超級簡單快捷,就擁有了一對兒高強度的加密字符串?
寫在最後
在應用程序中接口數據不想暴露給外部訪問,但是又不想做單向加密,那麼RSA的公鑰私鑰就派上大用場了,不對稱加密就是這麼好使。
Happy coding :)