openssl是一個功能強(qiáng)大的工具包,它集成了眾多密碼算法及實用工具,。我們即可以利用它提供的命令臺工具生成密鑰、證書來加密解密文件,,也可以在利用其提供的API接口在代碼中對傳輸信息進(jìn)行加密,。 RSA是一個非對稱加密算法,。簡單說來,非對稱加密算法就是說加密解密一個文件需要有兩個密鑰,,一個用來加密,,為公鑰,一個用來解密,,為私鑰,。證書可以用來授權(quán)公鑰的使用。 今天小研究了下openssl的rsa加密,,其中主要涉及利用公鑰和密鑰加解密文件,,沒有涉及對證書的操作。想要集體了解的可以去: http://blog.csdn.net/jiangsq12345/article/details/6066275 --------------------------------------------------------------------------------------------------------------------- 首先介紹下命令臺下openssl工具的簡單使用: 生成一個密鑰: openssl genrsa -out test.key 1024 這里-out指定生成文件的,。需要注意的是這個文件包含了公鑰和密鑰兩部分,,也就是說這個文件即可用來加密也可以用來解密。后面的1024是生成密鑰的長度,。 openssl可以將這個文件中的公鑰提取出來: openssl rsa -in test.key -pubout -out test_pub.key
-in指定輸入文件,,-out指定提取生成公鑰的文件名。至此,,我們手上就有了一個公鑰,,一個私鑰(包含公鑰)。現(xiàn)在可以將用公鑰來加密文件了,。 我在目錄中創(chuàng)建一個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為解密后的文件,。 至此,一次加密解密的過程告終,。在實際使用中還可能包括證書,,這個以后有機(jī)會再說~ ------------------------------------------------------------------------------------------------------------------- 下面是一個例子,,這個例子利用已有的密鑰來對source字符串進(jìn)行加密與解密: 按 Ctrl+C 復(fù)制代碼 按 Ctrl+C 復(fù)制代碼 一個比較奇怪的問題: 37,、38行中為從文件中獲取密鑰,發(fā)現(xiàn)如果使用openssl提供的PEM_read_RSAPublicKey方法會一直失敗,。 估計是文件格式的問題~ |
|