亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

使用Golang實現(xiàn)Sm2加解密的代碼詳解

 更新時間:2024年03月15日 09:46:43   作者:ZhongYuxuanG  
本文主要介紹了Go語言實現(xiàn)Sm2加解密的示例代碼,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧

Golang實現(xiàn)國密Sm2加解密

  • SM2 橢圓曲線公鑰密碼算法,SM2曲線實現(xiàn)性能和Golang SDK中的NIST P256橢圓曲線原生實現(xiàn)(非BoringCrypto)類似,也對amd64 和 arm64架構(gòu)做了專門匯編優(yōu)化實現(xiàn),SM2包實現(xiàn)了SM2橢圓曲線公鑰密碼算法的數(shù)字簽名算法、公鑰加密算法、密鑰交換算法,中的密鑰對保護數(shù)據(jù)格式。
  • SM2 公私鑰對的話,要么是自己產(chǎn)生,要么是別的系統(tǒng)產(chǎn)生后通過某種方式傳輸給您的。
  • SM2公鑰加密算法支持的密文編碼格式有兩種
  • 簡單串接方式: C1C3C2,曾經(jīng)老的標準為 C1C2C3
  • ASN.1格式

安裝

  • go get github.com/emmansun/gmsm

以下Dome自行添加err

實例:Sm2加密Dome

  • 如果您需要普通拼接編碼輸出,您可以調(diào)用sm2.Encrypt方法,其中EncrypterOpts類型參數(shù)可以傳入nil,表示默認C1C3C2。
func Dome() {
	//需要加密的參數(shù)
	dataArray := []interface{}{"object1", "object2"}
	//序列化為JSON字符串
	dataBytes, _ := json.Marshal(dataArray)

	// 假設(shè)這是你的SM2公鑰的十六進制字符串表示
	publicKeyHex := ""
	
	//DecodeString返回由十六進制字符串s表示的字節(jié)
	keypoints, _ := hex.DecodeString(publicKeyHex)

	//檢查是否有效并返回PublicKey
	testkey, err := sm2.NewPublicKey(keypoints)
	if err != nil {
		fmt.Printf("fail to new public key %v \n", err)
	}

	//兩種加密方式
	//ciphertext, err := sm2.EncryptASN1(rand.Reader, testkey, dataBytes)
	ciphertext, err := sm2.Encrypt(rand.Reader, testkey, dataBytes, nil)
	if err != nil {
		fmt.Fprintf(os.Stderr, "Error from encryption: %s\n", err)
		return
	}
	fmt.Printf("Ciphertext: %x \n", ciphertext)
}

實例:Sm2解密Dome

  • 這個SM2私鑰的解密方法Decrypt,通常情況下,對crypto.DecrypterOpts類型參數(shù),您只需傳入nil,系統(tǒng)會自己檢測輸入密文是ASN.1還是普通拼接,但是,如果密文是老舊的C1||C2||C3拼接,請傳入相應(yīng)的crypto.DecrypterOpts類型參數(shù),或者您可以先通過上面介紹的輔助函數(shù)轉(zhuǎn)換一下。
func Dome() {
	//私鑰
	privateKey := ``
	
	//解密
	ciphertext, _ := hex.DecodeString(`加密出來字符串`)
	
	privKey, _ := hex.DecodeString(privateKey)
	
	testkey, err := sm2.NewPrivateKey(privKey)
	if err != nil {
		fmt.Printf("fail to new private key %v \n", err)
	}

	plaintext, err := testkey.Decrypt(nil, ciphertext, nil)
	if err != nil {
		fmt.Fprintf(os.Stderr, "Error1 from decryption: %s \n", err)
		return
	}
	fmt.Printf("Plaintext: %s \n", string(plaintext))
}

總結(jié):用已經(jīng)生成的公鑰、密鑰和第三方庫可以解決Golang語言的國密加解密問題。

到此這篇關(guān)于使用Golang實現(xiàn)Sm2加解密的代碼詳解的文章就介紹到這了,更多相關(guān)Golang SM2加解密內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 深入探究Golang中flag標準庫的使用

    深入探究Golang中flag標準庫的使用

    在本文中,我們將深入探討 flag 標準庫的實現(xiàn)原理和使用技巧,以幫助讀者更好地理解和掌握該庫的使用方法,文中的示例代碼講解詳細,感興趣的可以了解一下
    2023-04-04
  • GoLang string與strings.Builder使用對比詳解

    GoLang string與strings.Builder使用對比詳解

    這篇文章主要介紹了GoLang string與strings.Builder使用對比,Builder 用于使用 Write 方法有效地構(gòu)建字符串。它最大限度地減少了內(nèi)存復制。零值可以使用了。不要復制非零生成器
    2023-03-03
  • Golang正則表達式判斷手機號或身份證方法實例

    Golang正則表達式判斷手機號或身份證方法實例

    日常使用一些軟件時會通過手機號碼來注冊,這就會用到正則表達式來判斷號碼是否正確,下面這篇文章主要給大家介紹了關(guān)于Golang正則表達式判斷手機號或身份證的相關(guān)資料,需要的朋友可以參考下
    2022-07-07
  • Go語言利用heap實現(xiàn)優(yōu)先級隊列

    Go語言利用heap實現(xiàn)優(yōu)先級隊列

    這篇文章主要為大家詳細介紹了Go語言中heap的使用以及如何利用heap實現(xiàn)優(yōu)先級隊列的相關(guān)資料,感興趣的小伙伴可以跟隨小編一起學習一下
    2023-05-05
  • 談?wù)刧olang的netpoll原理解析

    談?wù)刧olang的netpoll原理解析

    本文詳細介紹了Go語言中netpoll部分的實現(xiàn)細節(jié)和協(xié)程阻塞調(diào)度原理,特別是epoll在Linux環(huán)境下的工作原理,Go語言通過將epoll操作放在runtime包中,結(jié)合運行時調(diào)度功能,實現(xiàn)了高效的協(xié)程I/O操作,感興趣的朋友跟隨小編一起看看吧
    2024-11-11
  • Go并發(fā)編程結(jié)構(gòu)體多字段原子操作示例詳解

    Go并發(fā)編程結(jié)構(gòu)體多字段原子操作示例詳解

    這篇文章主要為大家介紹了Go并發(fā)編程結(jié)構(gòu)體多字段原子操作示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-12-12
  • 解讀unsafe.Pointer和uintptr的區(qū)別

    解讀unsafe.Pointer和uintptr的區(qū)別

    這篇文章主要介紹了解讀unsafe.Pointer和uintptr的區(qū)別及說明,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-02-02
  • Nunu快速構(gòu)建高效可靠Go應(yīng)用腳手架使用詳解

    Nunu快速構(gòu)建高效可靠Go應(yīng)用腳手架使用詳解

    這篇文章主要為大家介紹了如何使用Nunu快速構(gòu)建高效可靠Go應(yīng)用腳手架詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-06-06
  • 詳解Go語言中切片的長度與容量的區(qū)別

    詳解Go語言中切片的長度與容量的區(qū)別

    切片可以看成是數(shù)組的引用,切片的長度是它所包含的元素個數(shù)。切片的容量是從它的第一個元素到其底層數(shù)組元素末尾的個數(shù)。本文將通過示例詳細講講Go語言中切片的長度與容量的區(qū)別,需要的可以參考一下
    2022-11-11
  • Go語句與表達式案例手冊深度解析

    Go語句與表達式案例手冊深度解析

    這篇文章主要為大家介紹了Go語句與表達式案例手冊深度解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-09-09

最新評論