淺談RSA是如何生成密鑰的
我們之前給大家講過(guò)MD5加密、DES加密和SSL加密算法,今天我們來(lái)說(shuō)說(shuō)RSA加密算法的密鑰是如何生成的。
通過(guò)openssl工具生成RSA的公鑰和私鑰(opnssl工具可在互聯(lián)網(wǎng)中下載到)1)生成RSA私鑰,打開(kāi)bin文件夾下面的openssl.exe,打開(kāi)生成命令.txt文件,輸入“生成命令.txt”文件中,genrsa -out rsa_private_key.pem 1024,并回車(chē)得到生成成功的結(jié)果,如下圖:

此時(shí),我們可以在bin文件夾中看到一個(gè)文件名為rsa_private_key.pem的文件,用記事本方式打開(kāi)它,可以看到-----BEGIN RSA PRIVATE KEY-----開(kāi)頭,-----END RSA PRIVATE KEY-----結(jié)尾的沒(méi)有換行的字符串,這個(gè)就是原始的私鑰。
2)把RSA私鑰轉(zhuǎn)換成PKCS8格式
輸入命令pkcs8 -topk8 -inform PEM -in rsa_private_key.pem -outform PEM –nocrypt,并回車(chē)得到生成功的結(jié)果,這個(gè)結(jié)果就是PKCS8格式的私鑰,如下圖:

右鍵點(diǎn)擊openssl窗口上邊邊緣,選擇編輯→標(biāo)記,選中要復(fù)制的文字(如上圖),此時(shí)繼續(xù)右鍵點(diǎn)擊openssl窗口上邊邊緣,選擇編輯→復(fù)制,把復(fù)制的內(nèi)容粘土進(jìn)一個(gè)新的記事本中,可隨便命名,只要知道這個(gè)是PKCS8格式的私鑰即可。
3)生成公鑰
輸入命令rsa -in rsa_private_key.pem -pubout -out rsa_public_key.pem,并回車(chē),得到生成成功的結(jié)果,如下圖:

此時(shí),我們可以在bin文件夾中看到一個(gè)文件名為rsa_public_key.pem的文件,用記事本方式打開(kāi)它,可以看到-----BEGIN PUBLIC KEY-----開(kāi)頭,-----END PUBLIC KEY-----結(jié)尾的沒(méi)有換行的字符串,這個(gè)就是公鑰。
把rsa公鑰和私鑰配置到接口中
1) 整理公鑰和私鑰的格式
a) Java與。Net開(kāi)發(fā)語(yǔ)言
◆商戶(hù)的私鑰
1、必須保證只有一行文字,即,沒(méi)有回車(chē)、換行、空格等
2、去掉“-----BEGIN RSA PRIVATE KEY-----”、“-----END RSA PRIVATE KEY-----”,只保存這兩條文字之中的部分
◆商戶(hù)的公鑰
1、必須保證只有一行文字,即,沒(méi)有回車(chē)、換行、空格等
2、去掉“-----BEGIN PUBLIC KEY-----”、“-----END PUBLIC KEY-----”,只保存這兩條文字之中的部分
3、保存到一個(gè)臨時(shí)的記事本中,再打開(kāi)b.alipay.com,并用要綁定密鑰的支付寶賬號(hào)登錄,找到“獲取PID、KEY”的按鈕
4、根據(jù)http://help.alipay.com/support/help_detail.htm?help_id=243726&sh=Y&tab=null&info_type=9里的步驟上傳RSA公鑰,即剛才保存在臨時(shí)記事本中的那串字符串。
◆支付寶公鑰
1、必須保證只有一行文字,即,沒(méi)有回車(chē)、換行、空格等
2、去掉“-----BEGIN PUBLIC KEY-----”、“-----END PUBLIC KEY-----”,只保存這兩條文字之中的部分
a) Php開(kāi)發(fā)語(yǔ)言
◆商戶(hù)的私鑰
1、必須保證只有一行文字,即,沒(méi)有回車(chē)、換行、空格等
2、不需要對(duì)剛生成的(原始的)私鑰做pkcs8編碼,即不需要使用到PKCS8格式的私鑰
3、不需要去掉去掉“-----BEGIN PUBLIC KEY-----”、“-----END PUBLIC KEY-----”
簡(jiǎn)言之,只要維持剛生成出來(lái)的私鑰的內(nèi)容即可。
◆商戶(hù)的公鑰
1、必須保證只有一行文字,即,沒(méi)有回車(chē)、換行、空格等
2、去掉“-----BEGIN PUBLIC KEY-----”、“-----END PUBLIC KEY-----”,只保存這兩條文字之中的部分
3、保存到一個(gè)臨時(shí)的記事本中,再打開(kāi)b.alipay.com,并用要綁定密鑰的支付寶賬號(hào)登錄,找到“獲取PID、KEY”的按鈕
4、根據(jù)http://help.alipay.com/support/help_detail.htm?help_id=243726&sh=Y&tab=null&info_type=9里的步驟上傳RSA公鑰,即剛才保存在臨時(shí)記事本中的那串字符串。
◆支付寶公鑰
1、必須保證只有一行文字,即,沒(méi)有回車(chē)、換行、空格等
2、須保留“-----BEGIN PUBLIC KEY-----”、“-----END PUBLIC KEY-----”這兩條文字。
簡(jiǎn)言之,支付寶公鑰只需要維持原樣即可。
2) 把公鑰上傳給支付寶
操作流程見(jiàn):http://help.alipay.com/support/help_detail.htm?help_id=243726&sh=Y&tab=null&info_type=9
3) 從支付寶那獲得支付寶公鑰
此處公鑰由技術(shù)支持提供,請(qǐng)找技術(shù)支持索要支付寶公鑰文件。
4) 把私鑰、支付寶公鑰配置到支付寶接口中
a) Java與。Net開(kāi)發(fā)語(yǔ)言
打開(kāi)代碼示例中config配置文件,分別在參數(shù)private_key、public_key中填寫(xiě)好商戶(hù)的私鑰、支付寶的公鑰即可
b) Php開(kāi)發(fā)語(yǔ)言
打開(kāi)代碼實(shí)例中的key文件夾,
方法一:
分別打開(kāi)rsa_private_key.pem私鑰文件、alipay_public_key.pem支付寶公鑰文件,按照“()”注釋內(nèi)容填寫(xiě)并保存
方法二:
按照1)b)整理后的私鑰文件和公鑰文件重新命名為“rsa_private_key.pem”、“alipay_public_key.pem”,直接覆蓋key文件夾中的這兩個(gè)文件即可。
PHP的RSA配置常見(jiàn)問(wèn)題:
●PHP開(kāi)發(fā)語(yǔ)言的代碼示例中openssl文件夾中的3個(gè)DLL文件用法
1、如果你的系統(tǒng)是windows系統(tǒng),且system32文件目錄下沒(méi)有l(wèi)ibeay32.dll、ssleay32.dll這兩個(gè)文件
那么需要拷貝這兩個(gè)文件到system32文件目錄。
2、如果您的php安裝目錄下(php\ext)中沒(méi)有php_openssl.dll
那么請(qǐng)把php_openssl.dll放在這個(gè)文件夾中








