基于github.com/emmansun/gmsm庫編寫的SM2對C 開放的庫

go-gmsm cgo庫

介紹

基于github.com/emmansun/gmsm庫編寫的SM2對C
開放的庫

特性:非對稱加密、不支持跨平臺編譯

git地址:https://gitee.com/state-secret-series/go-gmsm.git

軟件架構

Go、Cgo、mod

安裝教程

克隆倉庫

git clone https://gitee.com/state-secret-series/go-gmsm.git

進入go-gmsm目錄

cd go-gmsm

下載依賴

go mod tidy

cgo靜態編譯

go build -x -buildmode=c-archive -o libgosm2.a

編譯完成后生成 libgosm2.a 、libgosm2.h 文件

使用教程

在C語言中調用

int main() {GO_SM2_KEY_PAIR key_pair;GO_SM2_SIGNATURE_STRUCT sm2_sig;GO_SM2_ENCRYPT_STRUCT ciphertext;GO_SM2_DECRYPT_STRUCT plaintext;GO_SM2_ERROR_STRUCT  error;unsigned char msg[] = {"這是測試數據"};int msg_len = (int) (strlen((char *) msg));unsigned char user_id[] = {"1234567812345678"};int user_id_len = (int) (strlen((char *) user_id));
//    unsigned char *ciphertext = NULL;
//    int ciphertext_len=0;int error_code;error_code =  GenerateKeyPair(&key_pair,&error);if(error_code){printf("GenerateKeyPair failed!%s\n", error.error);return error_code;}print_hex("公鑰", key_pair.pub_key, GO_SM2_PUBKEY_LEN);print_hex("私鑰", key_pair.pri_key, GO_SM2_PRIKEY_LEN);GoSm2SignData(key_pair.pri_key, GO_SM2_PRIKEY_LEN, msg, msg_len, user_id, user_id_len,GO_SM2_MODE_DEFAULT, &sm2_sig,&error);print_hex("簽名", sm2_sig.sig, sm2_sig.sig_len);error_code = Sm2SignVerify(key_pair.pub_key, GO_SM2_PUBKEY_LEN, msg, msg_len, user_id, user_id_len, &sm2_sig,&error);if (error_code) {printf("Verify SM2 signature failed!%d\n", error_code);return error_code;}printf("Verify SM2 signature succeeded!\n");error_code = Sm2Encrypt(key_pair.pub_key, GO_SM2_PUBKEY_LEN, msg, msg_len, GO_SM2_MODE_ANS1, GO_SM2_ORDER_C1C2C3, &ciphertext,&error);if (error_code) {printf("Sm2Encrypt SM2 Sm2Encrypt failed!%d\n", error_code);return error_code;}printf("Sm2Encrypt SM2 Sm2Encrypt succeeded!\n");print_hex("加密結果", ciphertext.ciphertext, ciphertext.ciphertext_len);error_code = Sm2Decrypt(key_pair.pri_key,GO_SM2_PRIKEY_LEN,ciphertext.ciphertext, ciphertext.ciphertext_len,GO_SM2_ORDER_C1C2C3,&plaintext,&error);if (error_code) {printf("Sm2Decrypt SM2 Sm2Decrypt failed!%d\n", error_code);return error_code;}printf("Sm2Decrypt SM2 Sm2Decrypt succeeded!\n");print_hex("解密結果", plaintext.plaintext, plaintext.plaintext_len);printf("文明:%s\n", plaintext.plaintext);return 0;
}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/39774.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/39774.shtml
英文地址,請注明出處:http://en.pswp.cn/web/39774.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

香橙派AIpro實測:YOLOv8便捷檢測,算法速度與運行速度結合

香橙派AIpro實測:YOLOv8便捷檢測,算法速度與運行速度結合 文章目錄 香橙派AIpro實測:YOLOv8便捷檢測,算法速度與運行速度結合一、引言二、香橙派AIpro簡介三、YOLOv8檢測效果3.1 目標檢測算法介紹3.1.1 YOLO家族3.1.2 YOLOv8算法理…

NDT配準收斂問題

GitHub - abougouffa/ndtpso_slam: ROS package for NDT-PSO, a 2D Laser scan matching algorithm for SLAM SRG NDT Das_Arun_2013.pdf;jsessionid97F7EDB4E8805EFE68D1E46687EF593F (uwaterloo.ca)

上海計算機考研炸了,這所學校慎報!上海大學計算機考研考情分析!

上海大學(Shanghai University),簡稱“上大”,是上海市屬、國家“211工程”重點建設的綜合性大學,教育部與上海市人民政府共建高校,國防科技工業局與上海市人民政府共建高校,國家“雙一流”世界…

【微信小程序開發】微信小程序界面彈窗,數據存儲相關操作代碼邏輯實現

?? 歡迎大家來到景天科技苑?? 🎈🎈 養成好習慣,先贊后看哦~🎈🎈 🏆 作者簡介:景天科技苑 🏆《頭銜》:大廠架構師,華為云開發者社區專家博主,…

ArcGIS Pro SDK (七)編輯 12 編輯模版

ArcGIS Pro SDK (七)編輯 12 編輯模版 文章目錄 ArcGIS Pro SDK (七)編輯 12 編輯模版1 在圖層上按名稱查找編輯模板2 查找屬于獨立表的表模板3 當前模板4 更改模板的默認編輯工具5 隱藏或顯示模板上的編輯工具6 使用圖層創建新模…

how to use Xcode

Xcode IDE概覽 Xcode 頁面主要分為以下四個部分: 工具欄(ToolBar area):主要負責程序運行調試,編輯器功能區域的顯示 / 隱藏;編輯區(Editor area):代碼編寫區域&#xf…

140. 好二叉樹(卡碼網周賽第二十四期(23年騰訊音樂筆試真題))

140. 好二叉樹&#xff08;卡碼網周賽第二十四期&#xff08;23年騰訊音樂筆試真題&#xff09;&#xff09; 題目描述 小紅定義一個二叉樹為“好二叉樹”&#xff0c;當且僅當該二叉樹所有節點的孩子數量為偶數(0 或者 2)。 小紅想知道&#xff0c;n&#xff08;1< n <…

vue table表格 ( parseTime-格式化時間)

<el-table-column label"發布時間" width"420px" prop"bidPublishDatetime"><template slot-scope"scope"><span>{{ parseTime(scope.row.bidPublishDatetime, {y}-{m}-{d}) }}</span></template></…

若依代碼生成

在若依框架中&#xff0c;以下是這些代碼的作用及它們在程序運行中的關聯方式&#xff1a; 1. domain.java&#xff1a;通常用于定義實體類&#xff0c;它描述了與數據庫表對應的對象結構&#xff0c;包含屬性和對應的訪問方法。作用是封裝數據&#xff0c;為數據的操作提供基…

Richtek立锜科技車規級器件選型

芯片按照應用場景&#xff0c;通常可以分為消費級、工業級、車規級和軍工級四個等級&#xff0c;其要求依次為軍工>車規>工業>消費。 所謂“車規級元器件”--即通過AEC-Q認證 汽車不同于消費級產品&#xff0c;會運行在戶外、高溫、高寒、潮濕等苛刻的環境&#xff0c…

澳藍榮耀時刻,6款產品入選2024年第一批《福州市名優產品目錄》

近日&#xff0c;福州市工業和信息化局公布2024年第一批《福州市名優產品目錄》&#xff0c;澳藍自主研發生產的直接蒸發冷卻空調、直接蒸發冷卻組合式空調機組、間接蒸發冷水機組、高效間接蒸發冷卻空調機、熱泵式熱回收型溶液調濕新風機組、防火濕簾6款產品成功入選。 以上新…

飛利浦的臺燈值得入手嗎?書客、松下多維度橫評大分享!

隨著生活品質的持續提升&#xff0c;人們對于健康的追求日益趨向精致與高端化。在這一潮流的推動下&#xff0c;護眼臺燈以其卓越的護眼功效與便捷的操作體驗&#xff0c;迅速在家電領域嶄露頭角&#xff0c;更成為了眾多家庭書房中不可或缺的視力守護者。這些臺燈以其精心設計…

(vue)eslint-plugin-vue版本問題 安裝axios時npm ERR! code ERESOLVE

(vue)eslint-plugin-vue版本問題 安裝axios時npm ERR! code ERESOLVE 解決方法&#xff1a;在命令后面加上 -legacy-peer-deps結果&#xff1a; 解決參考&#xff1a;https://blog.csdn.net/qq_43799531/article/details/131403987

【C語言】指針剖析(完結)

©作者:末央&#xff06; ©系列:C語言初階(適合小白入門) ©說明:以凡人之筆墨&#xff0c;書寫未來之大夢 目錄 回調函數概念回調函數的使用 - qsort函數 sizeof/strlen深度理解概念手腦并用1.sizeof-數組/指針專題2.strlen-數組/指針專題 指針面試題專題 回調函…

云服務器linux系統安裝配置docker

在我們拿到一個純凈的linux系統時&#xff0c;我需要進行一些基礎環境的配置 &#xff08;如果是云服務器可以用XShell遠程連接&#xff0c;如果連接不上可能是服務器沒開放22端口&#xff09; 下面是配置環境的步驟 sudo -s進入root權限&#xff1a;退出使用exit sudo -i進入…

process.env.VUE_APP_BASE_API

前端&#xff1a;process.env.VUE_APP_BASE_API 在Vue.js項目中&#xff0c;特別是使用Vue CLI進行配置的項目&#xff0c;process.env.VUE_APP_BASE_API 是一個環境變量的引用。Vue CLI允許開發者在不同環境下配置不同的環境變量&#xff0c;這對于管理API基礎路徑、切換開發…

MySQL調優的五個方向

客戶端與連接層的優化&#xff1a;調整客戶端DB連接池的參數和DB連接層的參數。MySQL結構的優化&#xff1a;合理的設計庫表結構&#xff0c;表中字段根據業務選擇合適的數據類型、索引。MySQL參數優化&#xff1a;調整參數的默認值&#xff0c;根據業務將各類參數調整到合適的…

【leetcode78-81貪心算法、技巧96-100】

貪心算法【78-81】 技巧【96-100】

谷粒商城-個人筆記(集群部署篇二)

前言 ?學習視頻&#xff1a;?Java項目《谷粒商城》架構師級Java項目實戰&#xff0c;對標阿里P6-P7&#xff0c;全網最強?學習文檔&#xff1a; 谷粒商城-個人筆記(基礎篇一)谷粒商城-個人筆記(基礎篇二)谷粒商城-個人筆記(基礎篇三)谷粒商城-個人筆記(高級篇一)谷粒商城-個…

【數據結構】02.順序表

一、順序表的概念與結構 1.1線性表 線性表&#xff08;linear list&#xff09;是n個具有相同特性的數據元素的有限序列。線性表是?種在實際中廣泛使用的數據結構&#xff0c;常見的線性表&#xff1a;順序表、鏈表、棧、隊列、字符串… 線性表在邏輯上是線性結構&#xff0…