登陸認證、web api介面呼叫、支付介面呼叫等場合經常涉及到:md5、sh、 rsa等演算法

蘭茗翔發表於2019-02-16

PHP-RSA
簡介

github 地址 https://github.com/lmxdawn/PH…

實際專案中的登陸認證、web api介面呼叫、支付介面呼叫等場合經常涉及到:md5、sh、 rsa等演算法。
各大銀行介面中經常使用MD5演算法對呼叫介面引數進行簽名防篡改。

如果你和我有同樣的問題 :

web api呼叫認證中,客戶端和服務端通過相同的公鑰對提交引數進行MD5加密,進行驗證。但
2014年中國山東大學的王小云教授公佈破譯了MD5、HAVAL-128、 MD4和RIPEMD演算法的報告。通過加
速的雜湊與衝撞方法破譯了MD5演算法,MD5還安全嗎?

RSA定義:

RSA為公鑰加密體制:

A.乙方生成兩把金鑰(公鑰和私鑰)。公鑰是公開的,任何人都可以獲得,私鑰則是保密的。

B.甲方獲取乙方的公鑰,然後用它對資訊加密。

C.乙方得到加密後的資訊,用私鑰解密。

RSA使用:

web 端 見 test_rsa.html
php 端 見 test_rsa.php

RSA特點:
A.便於理解,使用廣泛。

RSA演算法是第一個能同時用於加密和數字簽名的演算法,也易於理解和操作。 RSA是被研究得最廣泛的公鑰演算法,從提出到現今的三十多年裡,經歷了各種攻擊的考驗, 逐漸為人們接受,普遍認為是目前最優秀的公鑰方案之一。

B.缺點與不足:

加密和解密花費時間長、速度慢,只適合對少量資料進行加密。

為提高保密強度,RSA金鑰至少為500位長,一般推薦使用1024位。這就使加密的計算量很大。 為減少計算量,在傳送資訊時,常採用傳統加密方法與公開金鑰加密方法相結合的方式, 即資訊採用改進的DES或IDEA對話金鑰加密,然後使用RSA金鑰加密對話金鑰和資訊摘要。 對方收到資訊後,用不同的金鑰解密並可核對資訊摘要。

需要原型工具:

OpenSSL下載地址:http://slproweb.com/products/…

安裝OpenSSL
    隨意安裝到哪裡

點選OpenSLL的bin目錄下的 openssl.exe 進行私鑰和公鑰的生成
    生成私鑰
    genrsa -out rsa_private_key.pem 1024
    生成公鑰
    rsa -in rsa_private_key.pem -pubout -out rsa_public_key.pem

將生產的私鑰、公鑰拷貝到你的PHP專案中

開啟PHP的OpenSSL擴充套件

將php.ini中的extension=php_openssl.dll開啟(去掉;)

相關文章