日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > php >内容正文

php

PHP实现国密SM3算法

發布時間:2023/12/31 php 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 PHP实现国密SM3算法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

????????最近對接一個第三方系統,對方要求接口簽名加密使用sm3加密算法,不過php沒有原生支持該算法的函數,所以需要借助外力了。網上查資料發現在PHP中實現sm3算法,大概有一下三種途徑:
????????A.使用PHP的OpenSSL擴展實現
????????B.使用一個PHP擴展(php-sm3)實現
????????C.使用大佬封裝好的PHP類庫實現

方法A
? ? ? openssl在1.1.1版本中支持了國密算法,但是我看了一下我的環境,內置的openssl是1.0.2k,版本比較老。但是升級openssl也牽扯到對php中openssl擴展的升級,此服務器還有其他項目在運行,所以此方法就放棄了。

方法B
? ? ? 在網上發現了a php extension for sm3(實現sm3算法的php擴展),Git地址:https://github.com/luzhuqun/php-sm3 。按照里邊的方法進行安裝:

? ? ? 從安裝到測試都很順利,但是在使用的時候,出現了很多不可思議的錯誤,我的環境的PHP版本是7.2。在加密之后去調用第三方系統接口的時候,偶爾會出現nginx拋出的502錯誤,查了nginx的error log如下:

recv() failed (104: Connection reset by peer) while reading response header from upstream

? ? ? 再去檢查下php-fpm的錯誤log如下:

[15-Sep-2021 14:54:29] NOTICE: [pool www] child 20665 exited with code 0 after 8620.062716 seconds from start [15-Sep-2021 14:54:29] NOTICE: [pool www] child 12189 started [15-Sep-2021 14:54:29] NOTICE: [pool www] child 20646 exited with code 0 after 8636.730784 seconds from start [15-Sep-2021 14:54:29] NOTICE: [pool www] child 12190 started [15-Sep-2021 14:54:35] NOTICE: [pool www] child 20700 exited with code 0 after 8622.456855 seconds from start [15-Sep-2021 14:54:35] NOTICE: [pool www] child 12196 started [15-Sep-2021 14:54:54] NOTICE: [pool www] child 20657 exited with code 0 after 8649.930169 seconds from start [15-Sep-2021 14:54:54] NOTICE: [pool www] child 12246 started [15-Sep-2021 14:56:49] NOTICE: [pool www] child 20710 exited with code 0 after 8744.678411 seconds from start [15-Sep-2021 14:56:49] NOTICE: [pool www] child 12548 started [15-Sep-2021 15:04:39] NOTICE: [pool www] child 21734 exited with code 0 after 8807.254438 seconds from start [15-Sep-2021 15:04:39] NOTICE: [pool www] child 13876 started [15-Sep-2021 15:07:53] NOTICE: [pool www] child 23979 exited with code 0 after 8235.041492 seconds from start [15-Sep-2021 15:07:53] NOTICE: [pool www] child 14342 started [15-Sep-2021 15:14:39] NOTICE: [pool www] child 26275 exited with code 0 after 7821.893523 seconds from start [15-Sep-2021 15:14:39] NOTICE: [pool www] child 15539 started

? ? ??php worker進程頻繁地掛掉和拉起,查了很多資料,各種方法嘗試也沒解決,最后不得已去嘗試方法C。
?

方法C
? ? ? 在網上找到了兩個可以實現sm3的類庫
? ? ? 1.OneSm 類庫,但是我看有同胞的文章中說用這個類庫加密后有時候得到的結果不準確,而且加密長字符串的時候速度比較慢。于是乎,我就沒有去嘗試。
? ? ? 2.SM3-PHP 類庫,簡介詳盡,并且作者字里行間盡顯真誠和專業。

? ? ? 我就按照簡介方法集成到項目中,果然沒讓我失望,完美運行,nice!

總結

以上是生活随笔為你收集整理的PHP实现国密SM3算法的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。