RSA 和 OpenSSL 介紹
記得大學裏有門課叫《電子支付與安全》,這裏面就講了雙重祕鑰加密,主要內容如下:
RSA 是一種非對稱的簽名算法,即簽名密鑰(私鑰)與驗籤密鑰(公鑰)是不一樣的, 私鑰用於簽名,公鑰用於驗籤。在與支付寶交易中,會有 2 對公私鑰,即商戶公私鑰,支付寶公私鑰。使用這種算法可以起到防止數據被篡改的功能,保證支付訂單和支付結果不可抵賴(商戶私鑰只有商戶知道)。
OpenSSL 是基於衆多的密碼算法、公鑰基礎設施標準以及 SSL 協議安全開 發包。通過 OpenSSL 生成的簽名和內置的算法可以做到跨平臺,這樣在不同的開發語言中均可以簽名和驗籤。
Windows下OpenSSL安裝與使用(本人電腦Window7 x64)
剛開始以爲openssl是Windows命令行自帶的一個命令呢,結果很不幸--沒有。百度了一下Windows下安裝和配置openssl結果安裝了很多無用的東西,結果只是爲了編一個OPenssl。於是乎就百度下載了很多編譯後的Openssl,試了很多次,還花了某幣在某論壇上下載了。最終找到一份可以使用的Openssl程序。給大家推薦一個網站,可以去那裏獲取各種版本的Openssl。http://slproweb.com/products/Win32OpenSSL.html。
也可以去附件中自己下載.exe形式的安裝包。
將配置文件添加至環境變量(可選)
Openssl安裝目錄爲C:\\alipay 。
有興趣的童鞋可以將配置文件目錄添加到環境變量。
第一步:新建OPENSSL_HOME變量
第二步:新建配置文件環境變量
還可以將安裝文件bin目錄直接添加到Path變量中,這樣就不用每次執行命令還得進入bin目錄。
製作公私祕鑰
第一步:生成原始商戶祕鑰
在命令行下進入安裝文件bin目錄,執行"openssl genrsa -out rsa_private_key.pem 1024",效果如圖所示:
在bin目錄下生成了私鑰文件,進入bin目錄查看如下:
第二步:將商戶私鑰轉換成pkcs8格式。
在命令行中執行如下命令:
"openssl pkcs8 -topk8 -inform PEM -in rsa_private_key.pem -outform PEM -nocrypt"
效果如圖所示:
馬賽克打的不專業請忽略。
複製key內容從註釋-----BEGIN PRIVATE KEY-----(不包括該行註釋)至-----END PRIVATE KEY-----止。將複製的內容另存爲private_key.txt(去掉空格、換行),請妥善保管,簽名時使用。
第三步:生成商戶公鑰。在命令行執行:
"openssl rsa -in rsa_private_key.pem -pubout -out rsa_public_key.pem"
會在C:\\alipay\bin目錄下生成rsa_public_key.pem文件。如圖所示:
用文本編輯器打開該文件,如下圖所示:
刪除註釋"-----BEGIN PUBLIC KEY-----"和"-----END PUBLIC KEY-----",去掉回車和換行。最後得到一 行字符串並保存至“public_key.txt”文件中。如下圖所示: