摘要:第二次訪問接口,客戶端需使用返回公鑰加密訪問參數,之后將加密后的參數和一起發送給服務端進行驗證。關于函數的詳細介紹可以看上一位朋友的博客,鏈接在此簡單總結用加密公鑰傳遞給用公鑰加密信息傳遞給解密
RSA非對稱加密,在網絡鑒權中使用很多。本人也是在PHP與C++交互鑒權時出現問題,在解決問題過程中發現,網上對相關問題的描述很少,所在這里記錄下,希望對遇到相似問題的朋友有所幫助。
問題情景:
由于項目需求,需要PHP寫接口提供給C++調用,在接口返回數據之前,需要對訪問者進行鑒權已增加數據訪問安全性。
針對需求,我們采用的是兩次握手完成鑒權。
第一次訪問接口不帶參數,接口返回token和RSA公鑰(公鑰用base64加密,方便傳輸)。
第二次訪問接口,客戶端需使用返回公鑰加密訪問參數,之后將加密后的參數和token一起發送給服務端進行驗證。服務端收到訪問數據后,對加密參數用私鑰解密,檢查參數是否符合要求,完成鑒權過程。
我們的問題出現在第二次訪問時,發送過來的加密參數,無法通過私鑰解密。
注:公鑰和私鑰有PHP生成,使用這對公鑰私鑰可以在PHP端完成加解密,使用相同的公鑰私鑰也可以在C++端完成加解密,但兩者互通就會出現問題。
解決過程:
直接上正確思路,我們使用相同公鑰對相同參數進行加密后發現,兩者長度相差很大,于是判定應該是加密后兩者的編碼方式不同,據我了解RSA加密后C++端應該是輸出十六進制的密文,而PHP使用openssl_public_encrypt 公鑰加密后的密文應該是ASCII碼字符串,兩者長度相差很大。
根據以上判斷,C++發送給PHP的是十六進制密文,而使用openssl_private_decrypt解密需要的是ASCII碼字符串,當然解不出來了。既然知道問題所在,那我們把十六進制的密文轉換成ASCII碼字符串不就可以解決問題了,于是在PHP端使用pack("H*", param) 轉碼密文,之后果然順利解密。
關于pack函數的詳細介紹可以看OSC上一位朋友的博客,鏈接在此
簡單總結:
1.用pack(“H*”)
2.php base64加密公鑰傳遞給C++
3.C++ 用公鑰加密信息 post傳遞給PHP解密
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/28343.html
摘要:安全總是很重要的,各個語言對于通用的加密算法都會有實現。對于和加密算法本身,請查閱相關資料在中,很多功能經常是一個函數解決而中的卻不是。該文討論加密解密。一概要這是一個非對稱加密算法,一般通過公鑰加密,私鑰解密。 安全總是很重要的,各個語言對于通用的加密算法都會有實現。前段時間,用Go實現了RSA和DES的加密解密,在這分享一下。(對于RSA和DES加密算法本身,請查閱相關資料) 在P...
摘要:項目地址前后端交互時為了保證信息安全可使用方式加密信息,在數據量大的時候可采用結合方式。由于加密和解密使用同樣規則簡稱密鑰,這被稱為對稱加密算法。從那時直到現在,算法一直是最廣為使用的非對稱加密算法。 RSA-JS-PHP 項目地址rsa-js-php 前后端交互時為了保證信息安全可使用RSA方式加密信息,在數據量大的時候可采用DES+RSA結合方式。DEMO演示地址 一點歷史 1...
摘要:簡介地址實際項目中的登陸認證接口調用支付接口調用等場合經常涉及到等算法。各大銀行接口中經常使用算法對調用接口參數進行簽名防篡改。使用端見端見特點便于理解,使用廣泛。這就使加密的計算量很大。對方收到信息后,用不同的密鑰解密并可核對信息摘要。 PHP-RSA簡介 github 地址 https://github.com/lmxdawn/PH... 實際項目中的登陸認證、web api接口調...
摘要:簡介地址實際項目中的登陸認證接口調用支付接口調用等場合經常涉及到等算法。各大銀行接口中經常使用算法對調用接口參數進行簽名防篡改。使用端見端見特點便于理解,使用廣泛。這就使加密的計算量很大。對方收到信息后,用不同的密鑰解密并可核對信息摘要。 PHP-RSA簡介 github 地址 https://github.com/lmxdawn/PH... 實際項目中的登陸認證、web api接口調...
摘要:簡介地址實際項目中的登陸認證接口調用支付接口調用等場合經常涉及到等算法。各大銀行接口中經常使用算法對調用接口參數進行簽名防篡改。使用端見端見特點便于理解,使用廣泛。這就使加密的計算量很大。對方收到信息后,用不同的密鑰解密并可核對信息摘要。 PHP-RSA簡介 github 地址 https://github.com/lmxdawn/PH... 實際項目中的登陸認證、web api接口調...
閱讀 2285·2021-11-15 11:37
閱讀 2954·2021-09-01 10:41
閱讀 787·2019-12-27 11:58
閱讀 747·2019-08-30 15:54
閱讀 715·2019-08-30 13:52
閱讀 2930·2019-08-29 12:22
閱讀 1075·2019-08-28 18:27
閱讀 1452·2019-08-26 18:42