1. 程式人生 > >openssl命令列進行RSA加密解密

openssl命令列進行RSA加密解密

openssl是一個功能強大的工具包,它集成了眾多密碼演算法及實用工具。我們即可以利用它提供的命令臺工具生成金鑰、證書來加密解密檔案,也可以在利用其提供的API介面在程式碼中對傳輸資訊進行加密。

RSA是一個非對稱加密演算法。簡單說來,非對稱加密演算法就是說加密解密一個檔案需要有兩個金鑰,一個用來加密,為公鑰,一個用來解密,為私鑰。證書可以用來授權公鑰的使用。

今天小研究了下openssl的rsa加密,其中主要涉及利用公鑰和金鑰加解密檔案,沒有涉及對證書的操作。想要集體瞭解的可以去:

---------------------------------------------------------------------------------------------------------------------

首先介紹下命令臺下openssl工具的簡單使用:

生成一個金鑰:

openssl genrsa -out test.key 1024

這裡-out指定生成檔案的。需要注意的是這個檔案包含了公鑰和金鑰兩部分,也就是說這個檔案即可用來加密也可以用來解密。後面的1024是生成金鑰的長度。

openssl可以將這個檔案中的公鑰提取出來:

openssl rsa -in test.key -pubout -out test_pub.key

-in指定輸入檔案,-out指定提取生成公鑰的檔名。至此,我們手上就有了一個公鑰,一個私鑰(包含公鑰)。現在可以將用公鑰來加密檔案了。

我在目錄中建立一個hello的文字檔案,然後利用此前生成的公鑰加密檔案

openssl rsautl -encrypt -in hello -inkey test_pub.key -pubin -out hello.en 

-in指定要加密的檔案,-inkey指定金鑰,-pubin表明是用純公鑰檔案加密,-out為加密後的檔案。

解密檔案:

openssl rsautl -decrypt -in hello.en -inkey test.key -out hello.de

-in指定被加密的檔案,-inkey指定私鑰檔案,-out為解密後的檔案。

至此,一次加密解密的過程告終。在實際使用中還可能包括證書,這個以後有機會再說~