RSA密碼傳輸加密方案_第1頁
RSA密碼傳輸加密方案_第2頁
RSA密碼傳輸加密方案_第3頁
RSA密碼傳輸加密方案_第4頁
RSA密碼傳輸加密方案_第5頁
已閱讀5頁,還剩3頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、RSA密碼傳輸加密方案對應的【魯能集團泰山度假俱樂部產品展示系統(tǒng)安全功能初測觀察報告】中的(5,6)5)數(shù)據(jù)亢整性注;已核要求.對用戶名和密碼進行統(tǒng)一加密.加密方式為RSA.加密宇袴不可解密b)數(shù)據(jù)禿整性校驗i)it不箝今用戶口令在儲存和傳輸過程白未使用國密算法進行加密(妥求:逢議使用國密算法進行金整性保護)cj數(shù)據(jù)禿整性保護i)中不符臺(使用burpsuiw截取登錄包.修及口令倍息,系統(tǒng)未能檢測出數(shù)堀被篡改(要求:被檢較件應訂X檢測出左整性錯誤并在檢測到死整住錯誤時采取必姜的恢復措施)6)數(shù)據(jù)保密性注;己按要求.登錄進行傳輸加密.加密方式為RSA.字符不可解密切數(shù)據(jù)傳輸保密性i)高不符合(匚

2、令數(shù)捋在隹輸過程中為明文傳輸(爰求I建議佚用國密算法迸行保密性保護)町數(shù)據(jù)存儲保密11i)高不苻合用戶口令在儲存過程中未做保密性措施(妄求:建議使用國密算住進行陰有完整性保護)訴)注*己按要求將密碼存儲方式由隔來的AIDS改為Passnoid_hasli方式述行存儲互聯(lián)網的發(fā)展史上,安全性一直是開發(fā)者們相當重視的一個主題,為了實現(xiàn)數(shù)據(jù)傳輸安全,我們需要保證:數(shù)據(jù)來源(非偽造請求)、數(shù)據(jù)完整性(沒有被人修改過)、數(shù)據(jù)私密性(密文,無法直接讀取)等。雖然現(xiàn)在已經有SSL/TLS協(xié)議實現(xiàn)的HTTPS協(xié)議,但是因在客戶端上依賴瀏覽器的正確實現(xiàn),而且效率又很低,所以一般的敏感數(shù)據(jù)(如交易支付信息等)還是

3、需要我們使用加密方法來手動加密。雖然對于一般的WEB開發(fā)人員來說,大可不必深入了解一些安全相關的底層技術,但學習加密基礎知識,使用現(xiàn)有加密相關工具卻十分必要。由于工作需要,自己看了些加密相關文章,結合自己的使用經歷,完成此文。RSA加密算法是一種非對稱加密算法。在公鑰加密標準和電子商業(yè)中RSA被廣泛使用。RSA是1977年由羅納德李維斯特(RonRivest)、阿迪薩莫爾(AdiShamir)和倫納德阿德曼(LeonardAdleman)起提出的。當時他們三人都在麻省理工學院工作。RSA就是他們三人姓氏開頭字母拼在一起組成的。加密基礎學習如何使用加密之前,我們需要了解一些加密相關的基礎知識。加

4、密算法一般分為兩種:對稱加密算法和非對稱加密算法。對稱加密對稱加密算法是消息發(fā)送者和接收者使用同一個密匙,發(fā)送者使用密匙加密了文件,接收者使用同樣的密匙解密,獲取信息。常見的對稱加密算法有:des/aes/3des.對稱加密算法的特點有:速度快,加密前后文件大小變化不大,但是密匙的保管是個大問題,因為消息發(fā)送方和接收方任意一方的密匙丟失,都會導致信息傳輸變得不安全。非對稱加密與對稱加密相對的是非對稱加密,非對稱加密的核心思想是使用一對相對的密匙,分為公匙和私匙,私匙自己安全保存,而將公匙公開。公鑰與私鑰是一對,如果用公鑰對數(shù)據(jù)進行加密,只有用對應的私鑰才能解密;如果用私鑰對數(shù)據(jù)進行加密,那么只

5、有用對應的公鑰才能解密。發(fā)送數(shù)據(jù)前只需要使用接收方的公匙加密就行了。常見的非對稱加密算法有RSA/DSA:非對稱加密雖然沒有密匙保存問題,但其計算量大,加密速度很慢,有時候我們還需要對大塊數(shù)據(jù)進行分塊加密。數(shù)字簽名為了保證數(shù)據(jù)的完整性,還需要通過散列函數(shù)計算得到一個散列值,這個散列值被稱為數(shù)字簽名。其特點有:無論原始數(shù)據(jù)是多大,結果的長度相同的;輸入一樣,輸出也相同;對輸入的微小改變,會使結果產生很大的變化;加密過程不可逆,無法通過散列值得到原來的數(shù)據(jù);常見的數(shù)字簽名算法有md5,hash1等算法。PHP的openssl擴展openssl擴展使用openssl加密擴展包,封裝了多個用于加密解密

6、相關的PHP函數(shù),極大地方便了對數(shù)據(jù)的加密解密。常用的函數(shù)有:對稱加密相關:stringopenssl_encrypt(string$data,string$method,string$password)其中$data為其要加密的數(shù)據(jù),$method是加密要使用的方法,$password是要使用的密匙,函數(shù)返回加密后的數(shù)據(jù);其中$method列表可以使用openssl_get_cipher_methods()來獲取,我們選取其中一個使用,$method列表形如:其解密函數(shù)為stringopenssl_encrypt(string$data,string$method,string$passwo

7、rd)非對稱加密相關:openssl_get_publickey();openssl_pkey_get_public();/從證書導出公匙;openssl_get_privatekey();openssl_pkey_get_private();/從證書導出私匙;它們都只需要傳入證書文件(一般是.pem文件);openssl_public_encrypt(string$data,string&$crypted,mixed$key,int$padding=OPENSSL_PKCS1_PADDING)使用公匙加密數(shù)據(jù),其中$data是要加密的數(shù)據(jù);$crypted是一個引用變量,加密后的數(shù)據(jù)會被放入

8、這個變量中;$key是要傳入的公匙數(shù)據(jù);由于被加密數(shù)據(jù)分組時,有可能不會正好為加密位數(shù)bit的整數(shù)倍,所以需要$padding(填充補齊),$padding的可選項有OPENSSL_PKCS1_PADDING,OPENSSL_NO_PADDING,分另U為PKCS1填充,或不使用填充;與此方法相對的還有(傳入?yún)?shù)一致):openssl_private_encrypt();/使用私匙加密;openssl_private_decrypt();/使用私匙解密;openssl_public_decrypt();/使用公匙解密;還有簽名和驗簽函數(shù):boolopenssl_sign(string$data

9、,string&$signature,mixed$priv_key_id,mixed$signature_alg=OPENSSL_ALGO_SHA1)intopenssl_verify(string$data,string$signature,mixed$pub_key_id,mixed$signature_alg=0PENSSL_ALG0_SHA1)簽名函數(shù):$data為要簽名的數(shù)據(jù);$signature為簽名結果的引用變量;$priv_key_id為簽名所使用的私匙;$signature_alg為簽名要使用的算法,其算法列表可以使用openssl_get_md_methods()得到形如:

10、驗簽函數(shù):與簽名函數(shù)相對,只不過它要傳入與私匙對應的公匙;其結果為簽名驗證結果,1為成功,0為失敗,-1則表示錯誤;加密流程傳輸流程:傳輸過程中rsa加密用戶名和口令,md5密鑰加密用戶名和口令和驗證碼,對比的時候是把傳輸?shù)膔sa解密加上驗證碼,再進行md5驗證JS加密代碼:varpublic_key=;varpublic_length=0 x10001;functiondo_encrypt()varrsa=newRSAKey();rsasetPublic(public_key,public_length);varres=rsaencrypt(username=+$(#username)val

11、()+&password=+$(#password)val();varres_cap=;if($(#captcha)val()res_cap=rsaencrypt($(#captcha)val();-if(res&res_cap)$(#sign)val($md5(username=+$(#username)val()+&password=+$(#password)val()+$(#captcha)val();varresult=hex2b64(res);$(#data)val(result);$(#captcha_hidden).val(hex2b64(res_cap);$(#loginfor

12、m).submit();returntrue;服務端生成一組公鑰與私鑰,將公鑰發(fā)送給客戶端進行密碼加密,在使用密鑰進行解密,相關代碼:Rsa.phpclassRsa/openssl生成秘鑰時的e的值public$rsae;/openssl生成的modulus,十六進制數(shù)據(jù)public$rsa_modules;publicfunction_construet()$this-rsae=0 x10001;$this-rsa_modules=BB3DC79A95B19C104EE49F592EBA635A3FA6CC6380F8CFF8D2A65E04724AE9C4ACB8E6CDA15B75BC5

13、B94B21CBD6F433B7396E1B52D32F5B610453C49AFD7F39355086250695698B0281032DEADDCA3938AF8590DE6458FAD597DB1C3D9F53D5171968FCF2EE042D99B57414BF376793979A4951DEDBD80E84679EC5CDDAC3C65;*param$data要加密的字符串param$private_key公鑰returnmixed加密的結果*/publicfunctionpublicDecrypt($data,$public_key)$public_key=file_get_co

14、ntents($public_key);$pub_key=openssl_pkey_get_public($public_key);openssl_public_encrypt($data,$encrypted,$pub_key);$encrypted=base64_encode($encrypted);/因為加密后是亂碼,所以base64一下return$encrypted;*param$data要解密的字符串param$private_key私鑰returnmixed解密的結果*/publicfunctionprivateDecrypt($data,$private_key)$encryp

15、ted=base64_decode($data);$private_key=file_get_contents($private_key);$pi_key=openssl_pkey_get_private($private_key);openssl_private_decrypt($encrypted,$decrypted,$pi_key);return$decrypted;控制器實現(xiàn):$this-load-library(Rsa);$rsa=newRsa();$captcha=request_post(captcha);$decrypt_cap=$rsa-privateDecrypt($ca

16、ptcha,$this-_configrsa_private_key);if(strtolower($this-session-userdata(captcha)!=strtolower($decrypt_cap)$this-message(驗證碼不正確,site_url($this-siteclass/$this-sitemethod),2);$decrypt_data=$rsa-privateDecrypt($this-input-post(data,true),$this-_configrsa_private_key);if(!$decrypt_data)$this-systemlog(信息驗證錯誤,請重新登錄,0,4);sendmail_windows($this-datawebsetadmin_email,有管理員有登錄異常操作,管理員登錄時簽名信息被篡改,請檢查,登錄時間date(Y-m-dH:i:s);$this-jump(信息錯誤,請重新登錄,site_url(admincp/login),2);parse_str($decrypt_data,$form_data);$username=tr

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論