摘要:什么是是在原來簽名算法的基礎上,新增了支持的簽名算法。的簽名算法會繼續提供支持,但為了您的應用安全,強烈建議使用的簽名算法。
什么是RSA2?
RSA2是在原來SHA1WithRSA簽名算法的基礎上,新增了支持SHA256WithRSA的簽名算法。
該算法在摘要算法上比SHA1WithRSA有更強的安全能力。
SHA1WithRSA的簽名算法會繼續提供支持,但為了您的應用安全,強烈建議使用SHA256WithRSA的簽名算法。
開發平臺算法名稱 | 標準簽名算法名稱 | 備注 |
---|---|---|
RSA2 | SHA256WithRSA | (強烈推薦使用),強制要求RSA密鑰的長度至少為2048 |
RSA | SHA1WithRSA | 對RSA密鑰的長度不限制,推薦使用2048位以上 |
那些公司在使用?
一些大型公司的開發平臺,比如支付寶、新浪微博。
創建私鑰、公鑰
//生成原始 RSA私鑰文件
openssl genrsa -out rsa_private_key.pem 1024
//將原始 RSA私鑰轉換為 pkcs8格式
openssl pkcs8 -topk8 -inform PEM -in rsa_private_key.pem -outform PEM -nocrypt -out private_key.pem
//生成RSA公鑰
openssl rsa -in rsa_private_key.pem -pubout -out rsa_public_key.pem
//我們將私鑰rsa_private_key.pem用在服務器端,公鑰發放給android跟ios等前端。
PHP-RSA2簽名驗證
class Rsa2 { private static $PRIVATE_KEY = "rsa_private_key.pem 內容"; private static $PUBLIC_KEY = "rsa_public_key.pem 內容"; /** * 獲取私鑰 * @return bool|resource */ private static function getPrivateKey() { $privKey = self::$PRIVATE_KEY; return openssl_pkey_get_private($privKey); } /** * 獲取公鑰 * @return bool|resource */ private static function getPublicKey() { $publicKey = self::$PUBLIC_KEY; return openssl_pkey_get_public($publicKey); } /** * 創建簽名 * @param string $data 數據 * @return null|string */ public function createSign($data = "") { if (!is_string($data)) { return null; } return openssl_sign( $data, $sign, self::getPrivateKey(), OPENSSL_ALGO_SHA256 ) ? base64_encode($sign) : null; } /** * 驗證簽名 * @param string $data 數據 * @param string $sign 簽名 * @return bool */ public function verifySign($data = "", $sign = "") { if (!is_string($sign) || !is_string($sign)) { return false; } return (bool)openssl_verify( $data, base64_decode($sign), self::getPublicKey(), OPENSSL_ALGO_SHA256 ); } }
PHP 調用
require_once "Rsa2.php"; $rsa2 = new Rsa2(); $data = "my data"; //待簽名字符串 $strSign = $rsa2->createSign($data); //生成簽名 var_dump($strSign); $is_ok = $rsa2->verifySign($data, $sign); //驗證簽名 var_dump($is_ok);
相關推薦:
PHP 使用非對稱加密算法 (RSA)
一起來聊聊數據的加密技術
Thanks ~
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/22964.html
時間:2017年4月13日星期四說明:本文部分內容均來自慕課網。@慕課網:http://www.imooc.com教學示例源碼:https://github.com/zccodere/s...個人學習源碼:https://github.com/zccodere/s... 第一章:概述 1-1 數字簽名算法概述 數字簽名算法 簽名-安全性,抗否認性 數字簽名:帶有密鑰(公鑰、私鑰)的消息摘要算法 驗...
摘要:實際上這一篇和上一篇均可以看作是關于加解密的懶漢入門篇安全加強篇一的后續,只不過側重點在于安全上。回到上篇結果提到的問題,就是對稱加密的安全性要人命,非對稱加密的性能非常要人命。元首作為高智商罪犯,這種低級錯誤是不可能犯的。 為什么標題總是要帶上API安全關鍵字呢?因為我想我樂意。 實際上這一篇和上一篇均可以看作是《關于PHP加解密的懶漢入門篇(API安全加強篇一)》》)的后續,只不過...
摘要:實際上這一篇和上一篇均可以看作是關于加解密的懶漢入門篇安全加強篇一的后續,只不過側重點在于安全上。回到上篇結果提到的問題,就是對稱加密的安全性要人命,非對稱加密的性能非常要人命。元首作為高智商罪犯,這種低級錯誤是不可能犯的。 為什么標題總是要帶上API安全關鍵字呢?因為我想我樂意。 實際上這一篇和上一篇均可以看作是《關于PHP加解密的懶漢入門篇(API安全加強篇一)》》)的后續,只不過...
摘要:公開密鑰加密的出現大大減輕了交換對稱密鑰的困難,公鑰可以公開透過不安全可被竊聽的渠道發送,用以加密明文。當與配合使用,稱之為,與配合則稱為,以此類推。這步沒有簽名,服務端收到數據后不會發現被篡改。對于認證機構,一旦私鑰外泄,將可能導致整未濟,亨。小狐汔濟,濡其尾,無攸利。——《易》六、密鑰管理當不再擔心身份會被冒充、篡改之后,我們再來詳細談談網絡通信中對于加密算法的密鑰管理。在密鑰被簽發后,...
摘要:原文地址支付支付步驟為獲取支付寶的配置信息。將得到的數據請求支付寶客戶端進行支付。端將拼接好的字符串拿去請求支付寶客戶端即可調起支付寶進行支付。向支付寶申請新訂單,獲取支付。成功請求回來后,就可以向支付寶發出一次支付請求。 支付寶在所有支付方式中最好開發的了,因為文檔比較清晰,而且開發起來也比較簡單。因此,支付寶的坑是相對較少的。原文地址 APP支付 APP支付步驟為: 獲取支付寶的...
閱讀 2413·2021-08-18 10:21
閱讀 2519·2019-08-30 13:45
閱讀 2155·2019-08-30 13:16
閱讀 2100·2019-08-30 12:52
閱讀 1363·2019-08-30 11:20
閱讀 2622·2019-08-29 13:47
閱讀 1622·2019-08-29 11:22
閱讀 2760·2019-08-26 12:11