成人性生交大片免费看视频r_亚洲综合极品香蕉久久网_在线视频免费观看一区_亚洲精品亚洲人成人网在线播放_国产精品毛片av_久久久久国产精品www_亚洲国产一区二区三区在线播_日韩一区二区三区四区区区_亚洲精品国产无套在线观_国产免费www

主頁(yè) > 知識(shí)庫(kù) > 詳解PHP版本兼容之openssl調(diào)用參數(shù)

詳解PHP版本兼容之openssl調(diào)用參數(shù)

熱門標(biāo)簽:拉薩打電話機(jī)器人 h5 地圖標(biāo)注 合肥外呼系統(tǒng)app 沈陽(yáng)人工智能電銷機(jī)器人公司 高識(shí)別電銷機(jī)器人 智能外呼電銷系統(tǒng) 電銷機(jī)器人-快迭智能 寶安400電話辦理 哈爾濱400電話辦理到易號(hào)網(wǎng)

背景與問(wèn)題解決方式

老項(xiàng)目重構(gòu)支付寶部分代碼整合支付寶新的sdk時(shí)發(fā)現(xiàn)驗(yàn)簽總是失敗,才發(fā)現(xiàn)是open_verify最后的參數(shù)傳輸問(wèn)題。而open_sign同樣如此。本文主要說(shuō)明open_verify的解決方式和代碼解析。而問(wèn)題的解決方式也是修改最后的加密類型參數(shù),解決方式代碼如下:

// 將最后的常量OPENSSL_ALGO_SHA256修改成字符串
openssl_verify($data, base64_decode($sign), $res, "sha256WithRSAEncryption");

官方文檔解釋

上面只說(shuō)了問(wèn)題的出現(xiàn)與對(duì)應(yīng)的解決方式,如果有興趣繼續(xù)了解該函數(shù)的,可以繼續(xù)往下讀,首先來(lái)看下官方文檔對(duì)此函數(shù)的解釋。

int openssl_verify ( string $data , string $signature , mixed $pub_key_id [, mixed $signature_alg = OPENSSL_ALGO_SHA1 ] )

參數(shù)注釋

data

以前用來(lái)生成簽名的數(shù)據(jù)字符串。

signature

原始二進(jìn)制字符串,通過(guò)openssl_sign()或類似的函數(shù)生成。

pub_key_id

resource - 一個(gè)密鑰, 通過(guò) openssl_get_publickey() 函數(shù)返回。

string - 一個(gè) PEM 格式的密鑰, 比如, “—–BEGIN PUBLIC KEY—– MIIBCgK…”

signature_alg

int - 以下簽名算法之一Signature Algorithms.

string - 由openssl_get_md_methods()函數(shù)返回的可用字符串,比如, “sha1WithRSAEncryption” 或者 “sha512”.
官方文檔給出的signature_alg參數(shù)可以為int或者string類型,int類型直接調(diào)用對(duì)應(yīng)的枚舉值,string則是openssl_get_md_methods函數(shù)返回的可用字符串,調(diào)用openssl_get_md_methods方法打印參數(shù)如下,而這些字符串也是對(duì)應(yīng)加密方式的摘要信息,后文源碼中可能會(huì)看的對(duì)函數(shù)調(diào)用稍微明白那么一丟丟。

Array
(
[0] => DSA
[1] => DSA-SHA
[2] => DSA-SHA1
[3] => DSA-SHA1-old
[4] => DSS1
[5] => GOST 28147-89 MAC
[6] => GOST R 34.11-94
[7] => MD4
[8] => MD5
[9] => MDC2
[10] => RIPEMD160
[11] => RSA-MD4
[12] => RSA-MD5
[13] => RSA-MDC2
[14] => RSA-RIPEMD160
[15] => RSA-SHA
[16] => RSA-SHA1
[17] => RSA-SHA1-2
[18] => RSA-SHA224
[19] => RSA-SHA256
[20] => RSA-SHA384
[21] => RSA-SHA512
[22] => SHA
[23] => SHA1
[24] => SHA224
[25] => SHA256
[26] => SHA384
[27] => SHA512
[28] => dsaEncryption
[29] => dsaWithSHA
[30] => dsaWithSHA1
[31] => dss1
[32] => ecdsa-with-SHA1
[33] => gost-mac
[34] => md4
[35] => md4WithRSAEncryption
[36] => md5
[37] => md5WithRSAEncryption
[38] => md_gost94
[39] => mdc2
[40] => mdc2WithRSA
[41] => ripemd
[42] => ripemd160
[43] => ripemd160WithRSA
[44] => rmd160
[45] => sha
[46] => sha1
[47] => sha1WithRSAEncryption
[48] => sha224
[49] => sha224WithRSAEncryption
[50] => sha256
[51] => sha256WithRSAEncryption
[52] => sha384
[53] => sha384WithRSAEncryption
[54] => sha512
[55] => sha512WithRSAEncryption
[56] => shaWithRSAEncryption
[57] => ssl2-md5
[58] => ssl3-md5
[59] => ssl3-sha1
[60] => whirlpool
)

由此也可看出函數(shù)是兼容兩種模式的,但是為什么php版本會(huì)有兼容問(wèn)題么?在openssl庫(kù)版本是一致的情況下,接下來(lái)的原因應(yīng)該只遺留在php擴(kuò)展的問(wèn)題上。那下面來(lái)看看對(duì)應(yīng)的源碼去發(fā)現(xiàn)問(wèn)題出現(xiàn)在哪吧。

函數(shù)源碼

openssl_verify函數(shù)源碼

openssl_verify源碼中有這樣一段,如果參數(shù)method為string類型的時(shí)候,調(diào)用openssl庫(kù)的EVP_get_digestbyname方法,在網(wǎng)上查看了下此方法的作用,主要是根據(jù)摘要信息返回
EVP_MD結(jié)構(gòu),而EVP_get_digestbyname方法由于是openssl庫(kù)源代碼并且對(duì)C語(yǔ)言知之甚少,熊某就沒(méi)去查看,
只是了解php代碼調(diào)用背后的一些處理邏輯,有興趣的可以看看openssl庫(kù)的代碼實(shí)現(xiàn)。

if (method == NULL || Z_TYPE_P(method) == IS_LONG) {
    if (method != NULL) {
      signature_algo = Z_LVAL_P(method);
    }
    mdtype = php_openssl_get_evp_md_from_algo(signature_algo);
  } else if (Z_TYPE_P(method) == IS_STRING) {
    mdtype = EVP_get_digestbyname(Z_STRVAL_P(method));
  } else {
    php_error_docref(NULL, E_WARNING, "Unknown signature algorithm.");
    RETURN_FALSE;
  }

原來(lái)是枚舉值的問(wèn)題?

一開(kāi)始本人以為php5.3版本會(huì)是method參數(shù)類型的限制,一看源代碼才發(fā)現(xiàn),openssl_verify函數(shù)的實(shí)現(xiàn)邏輯是一致的,都是檢測(cè)method參數(shù)類型,那么問(wèn)題就不出現(xiàn)在參數(shù)類型上,然后我查看了參數(shù)為long類型是所調(diào)用的php_openssl_get_evp_md_from_algo函數(shù),果然發(fā)現(xiàn)了問(wèn)題所在。源碼如下:

php5.3.27

static EVP_MD * php_openssl_get_evp_md_from_algo(long algo) { /* {{{ */
  EVP_MD *mdtype;

  switch (algo) {
    case OPENSSL_ALGO_SHA1:
      mdtype = (EVP_MD *) EVP_sha1();
      break;
    case OPENSSL_ALGO_MD5:
      mdtype = (EVP_MD *) EVP_md5();
      break;
    case OPENSSL_ALGO_MD4:
      mdtype = (EVP_MD *) EVP_md4();
      break;
#ifdef HAVE_OPENSSL_MD2_H
    case OPENSSL_ALGO_MD2:
      mdtype = (EVP_MD *) EVP_md2();
      break;
#endif
    case OPENSSL_ALGO_DSS1:
      mdtype = (EVP_MD *) EVP_dss1();
      break;
    default:
      return NULL;
      break;
  }
  return mdtype;
}

php7.1.18

static EVP_MD * php_openssl_get_evp_md_from_algo(zend_long algo) { /* {{{ */
  EVP_MD *mdtype;

  switch (algo) {
    case OPENSSL_ALGO_SHA1:
      mdtype = (EVP_MD *) EVP_sha1();
      break;
    case OPENSSL_ALGO_MD5:
      mdtype = (EVP_MD *) EVP_md5();
      break;
    case OPENSSL_ALGO_MD4:
      mdtype = (EVP_MD *) EVP_md4();
      break;
#ifdef HAVE_OPENSSL_MD2_H
    case OPENSSL_ALGO_MD2:
      mdtype = (EVP_MD *) EVP_md2();
      break;
#endif
#if OPENSSL_VERSION_NUMBER  0x10100000L || defined (LIBRESSL_VERSION_NUMBER)
    case OPENSSL_ALGO_DSS1:
      mdtype = (EVP_MD *) EVP_dss1();
      break;
#endif
    case OPENSSL_ALGO_SHA224:
      mdtype = (EVP_MD *) EVP_sha224();
      break;
    case OPENSSL_ALGO_SHA256:
      mdtype = (EVP_MD *) EVP_sha256();
      break;
    case OPENSSL_ALGO_SHA384:
      mdtype = (EVP_MD *) EVP_sha384();
      break;
    case OPENSSL_ALGO_SHA512:
      mdtype = (EVP_MD *) EVP_sha512();
      break;
    case OPENSSL_ALGO_RMD160:
      mdtype = (EVP_MD *) EVP_ripemd160();
      break;
    default:
      return NULL;
      break;
  }
  return mdtype;
}

由上面源代碼可以很清晰的發(fā)現(xiàn)問(wèn)題所在,隨著php版本的升級(jí),其所在的openssl擴(kuò)展對(duì)應(yīng)的調(diào)用條件也增加了很多,最后導(dǎo)致上述問(wèn)題的源碼也只是switch…case少了幾個(gè)條件,在此也希望大家發(fā)現(xiàn)問(wèn)題的時(shí)候,可以先去解決問(wèn)題,然后有興趣的話可以去查看源代碼分析下問(wèn)題所導(dǎo)致的原因。

您可能感興趣的文章:
  • 使用openssl 生成免費(fèi)證書的方法步驟
  • 升級(jí) PHP7.1 后 openssl 解密 mcrypt AES 數(shù)據(jù)不兼容問(wèn)題的處理方法
  • PHP7.1中使用openssl替換mcrypt的實(shí)例詳解
  • linux環(huán)境下安裝PHP的OpenSSL擴(kuò)展的方法講解
  • php7安裝openssl擴(kuò)展方法
  • 詳解Linux(centos7)下安裝OpenSSL安裝圖文方法
  • Linux下Nginx安裝的方法(pcre和openssl)
  • Openssl實(shí)現(xiàn)雙向認(rèn)證教程(附服務(wù)端客戶端代碼)

標(biāo)簽:林芝 山東 威海 巴中 泰州 張家口 成都 梅州

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《詳解PHP版本兼容之openssl調(diào)用參數(shù)》,本文關(guān)鍵詞  詳解,PHP,版本,兼容,之,openssl,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《詳解PHP版本兼容之openssl調(diào)用參數(shù)》相關(guān)的同類信息!
  • 本頁(yè)收集關(guān)于詳解PHP版本兼容之openssl調(diào)用參數(shù)的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    91国产视频在线| 椎名由奈jux491在线播放| 日韩一区中文字幕| 国产一区二区三区乱码| 一本色道久久综合精品竹菊| 国产av人人夜夜澡人人爽麻豆| 国产真实乱子伦| 久久久9999久久精品小说| 一区二区激情小说| 精品人妻伦一区二区三区久久| 丰满熟女人妻一区二区三区| 99视频免费| 在线看片你懂得| 黄色一级视频在线播放| 欧美一区二区福利在线| h网站免费观看| 国产欧美精品日韩精品| 国产人成亚洲第一网站在线播放| av网站中文字幕| 色婷婷一区二区三区在线观看| 91av在线精品| 国产精品外围在线观看| 日韩一区二区三区精品| 九九热免费在线视频| 成人三级黄色免费网站| 国产精品久久久久永久免费观看| 久久久无码人妻精品无码| 亚洲成人在线播放| 日韩在线激情| 欧美激情亚洲综合一区| 中文字幕一区二区三区四| www.91av...| 亚洲欧美视频在线观看| 久久精品无码一区二区三区| 亚洲精品无遮挡| 国产v日韩v欧美v| 国产精品观看在线亚洲人成网| 国内精品视频久久| 精品国产欧美| 成人高清视频在线| 日本中文字幕第一页| 国产999精品久久久久久绿帽| 天堂一区在线观看| 一区二区91美女张开腿让人桶| 欧美日韩精品免费观看视一区二区| 成人av免费电影网站| 麻豆国产精品va在线观看不卡| 日韩欧美国产高清| 日韩成人精品在线观看| 成人黄色免费看| 国产精品第一国产精品| 欧美成人三级在线视频| 成年美女黄网站色大片不卡| 娇妻被老王脔到高潮失禁视频| 水蜜桃免费高清视频在线播放| 日韩三级中文字幕| 蜜乳av一区二区三区| 欧美一级黄色影院| 日本精品一区二区三区视频| www国产在线| 全国男人的天堂天堂网| 亚洲综合久久av一区二区三区| 免费中文字幕视频| 亚洲成人av在线播放| 97人妻精品一区二区三区视频| 日韩欧美一级视频| 精品国产91亚洲一区二区三区www| 国产成人在线免费| 国产成人97精品免费看片| 国产日韩在线一区| 午夜国产一区二区| 国产成人99久久亚洲综合精品| 91成人精品网站| 99久久精品国产成人一区二区| 亚洲精品推荐| 濑亚美莉大战黑人中文字幕| 国产精品日韩在线观看| 高清乱码免费看污| 久久久精品人体av艺术| 99国产牛牛视频在线网站| 又大又硬又爽免费视频| 久久精品视频一区二区| 清纯唯美激情亚洲| 亚洲精品网址在线观看| 国内精品久久国产| 麻豆精品免费视频入口| 伊人久久综合网另类网站| 女教师高潮黄又色视频| 大香伊人久久精品一区二区| 97视频在线观看免费高清完整版在线观看| 91中文精品字幕在线视频| 成人vr资源| 日本肉肉一区| 亚洲日韩中文字幕一区| 国产精品色噜噜| 天堂av在线7| 女女同性女同一区二区三区按摩| 日韩精品一级| 欧美视频三区在线播放| 国产在线视频一区| 最近中文字幕在线中文高清版| palipali轻量版永久网页入口| 国产精品视频最多的网站| 加勒比婷婷色综合久久| eeuss影院www在线观看手机| 欧美日本三级| 久久久久久久久久久久久久久久av| 91麻豆一区二区| 8848成人影院| 欧美性xxxxx极品视频| 亚洲成a人无码| 国产乱妇乱子| 先锋av资源在线| 免费高清视频在线一区| 成人免费观看毛片| 一区二区91美女张开腿让人桶| 久久综合九色综合久久久精品综合| 四季久久免费一区二区三区四区| 一级片视频免费| 欧美在线制服丝袜| 亚洲熟妇av日韩熟妇在线| 精品少妇人妻一区二区黑料社区| 亚洲精品高清视频在线观看| 天天干天天曰天天操| 蜜桃av中文字幕| 亚洲中文一区二区三区| 99国产精品白浆在线观看免费| 日本在线丨区| 久久国产精品黑丝| 福利一区和二区| 97欧洲一区二区精品免费| 中文在线字幕观看| 爽好久久久欧美精品| 欧美日韩一区二区三区在线看| 肉色超薄丝袜脚交69xx图片| 国产一级二级三级视频| 91精品综合久久久久久五月天| 久久久噜噜噜久久中文字幕色伊伊| 日韩欧美一区二区三区在线视频| 亚洲国内精品视频| 欧美人妻精品一区二区三区| 男人的j进女人的j一区| 婷婷六月国产精品久久不卡| 日韩在线激情| 一区二区三区日韩精品视频| 欧美大秀在线观看| 19禁羞羞电影院在线观看| 国产乱女淫av麻豆国产| 欧美成人免费在线| 天天靠夜夜靠| 99久久久无码国产精品性| 在线免费观看毛片| 一本一道久久a久久精品综合| 国产51人人成人人人人爽色哟哟| 欧美与欧洲交xxxx免费观看| 日本中文字幕在线观看视频| 99在线小视频| 亚洲自拍偷拍图| 精品久久久久久久中文字幕| 色哟哟一区二区在线观看| 精品欧美一区二区在线观看视频| 日韩一区二区三区精品视频| 色偷偷久久人人79超碰人人澡| 国产一区二区三区不卡视频网站| 国产欧美日韩在线视频| 国产高清精品一区| 国产真实乱人偷精品视频| 爱看av在线| 女人18毛片一区二区三区| 中文xxx视频| 亚洲成熟少妇视频在线观看| 中文字幕综合在线观看| 欧美成人高潮一二区在线看| 免费看毛片的网址| 中日韩美女免费视频网址在线观看| 国产欧美精品区一区二区三区| 亚洲の无码国产の无码步美| 日本视频一二区| 日本一区二区三区四区五区| 高端美女服务在线视频播放| 极品粉嫩国产18尤物| 日韩一级片免费视频| 深夜精品寂寞黄网站在线观看| 亚洲欧美成人一区二区三区| 91精品免费在线| 国产精品青青草| av老司机免费在线| 69夜色精品国产69乱| 曰本人一级毛片免费完整视频| 无遮挡的视频在线观看| 成人黄视频免费| 国产99对白在线播放| 国产精品成人无码免费| 98精品国产自产在线观看| www.久久视频| 91在线视频观看免费| 国产精品一区二区不卡| 亚洲欧洲另类国产综合| 亚洲精品国产suv一区| 男人的天堂免费| 粗大的内捧猛烈进出在线视频| 欧美bbbbxxxx| 林心如三级全黄裸体| 欧美激情影音先锋| 日本a一级在线免费播放| 日本色综合中文字幕| 熟女熟妇伦久久影院毛片一区二区| 视频在线一区二区| 精品国产无码一区二区三区| 免费高清在线观看电视| 亚洲美女精品成人在线视频| jizzjizz少妇亚洲水多| 成人免费黄色网址| 日本边添边摸边做边爱的第三级| 日本老熟俱乐部h0930| 精品久久美女| 日韩精品一区二| eeuss国产一区二区三区| 天天操中文字幕| 亚洲五码在线| 丰满人妻一区二区三区四区| 国产一卡不卡| 婷婷综合激情| 综合久久亚洲| 日韩成人激情视频| 亚洲爽爆av| 精品日韩电影| 国产盗摄——sm在线视频| 不卡视频在线| 亚洲日本色图| 人妻久久一区二区| 91看片就是不一样| 国产网站免费在线观看| 91av视频| 日本精品在线观看| а√天堂8资源中文在线| 风韵丰满熟妇啪啪区老熟熟女| 岛国av午夜精品| 午夜一区二区三区视频| 美日韩一级片在线观看| 韩国v欧美v日本v亚洲| 日本人体一区二区| 91综合久久爱com| 黄视频在线观看网站| 国产精品日韩精品欧美在线| 午夜精品偷拍| 国产aⅴ精品一区二区三区黄| 蜜桃极品自拍av| 欧美午夜一区二区三区免费大片| 都市激情国产精品| 黄色电影在线免费观看| 精品成人免费观看| 国产精品欧美一区二区三区| 国产精品500部| 视频一区欧美日韩| 性欧美xxx69hd高清| 99爱视频在线观看| 手机电影在线观看| 亚洲成人原创| 免费观看欧美成人禁片| 一区二区三区播放| 影音先锋中文在线播放| 国产精品久久久久久网站| 欧美精品久久久| 日韩成人免费观看| 日韩av在线免费| 婷婷av一区二区三区| 99久久精品免费看国产一区二区三区| 一区三区在线欧| 视频免费1区二区三区| a在线观看视频| 国产在线免费视频| 2018日韩中文字幕| 黄在线免费看| 狠狠入ady亚洲精品| 成网站在线观看人免费| 四虎永久成年免费影院| 一区二区三区黄| 日韩精品成人av| 自拍偷拍亚洲天堂| 国产一级又黄| japanesexxxx在线播放| 99久久精品国产观看| 日本精品在线视频| 久久美女性网| 国产精品无码一区二区三| 欧美三级在线| 亚洲欧洲在线观看| 一本一道精品欧美中文字幕| 二个人看的毛片| gratisvideos另类灌满| 精品久久久久久无码人妻| 国产综合久久久| 国产精品毛片视频| 影音先锋欧美精品| 日韩高清av电影| 日本精品裸体写真集在线观看| 久久久久久久极品内射| 精品无码久久久久久久| 久久人妻无码aⅴ毛片a片app| 欧美日产国产成人免费图片| 国产亚洲精品久久久优势| 日韩成人av影视| 国产成a人亚洲精品| 麻豆传媒在线免费| 视频一区中文字幕国产| 日韩乱码人妻无码中文字幕久久| 国产精品久久久久久久久妇女| 天美av一区二区三区久久| 国产+成+人+亚洲欧洲在线| 日韩成人免费在线观看| 精品久久香蕉国产线看观看gif| 韩国福利在线| 激情久久av一区av二区av三区| 午夜精品成人在线| 天堂av资源在线| 999av小视频在线| 亚洲男女视频在线观看| 久久九九视频| 影音先锋2020资源| 国产寡妇色xxⅹ交肉视频| 996这里只有精品| 在线观看麻豆蜜桃| 天堂8中文在线最新版在线| 色啪免费观看视频| 中文国产字幕在线观看| 欧美视频在线观看 亚洲欧| 国产福利精品一区二区三区|