国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

保護(hù)數(shù)據(jù)隱私:深入探索Golang中的SM4加密解密算法

這篇具有很好參考價(jià)值的文章主要介紹了保護(hù)數(shù)據(jù)隱私:深入探索Golang中的SM4加密解密算法。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

前言

最近做的項(xiàng)目對(duì)安全性要求比較高,特別強(qiáng)調(diào):系統(tǒng)不能涉及MD5、SHA1、RSA1024、DES高風(fēng)險(xiǎn)算法。

那用什么嘞?甲方:建議用國(guó)產(chǎn)密碼算法SM4。

擅長(zhǎng)敏捷開發(fā)(CV大法)的我,先去GitHub找了開源項(xiàng)目、又去網(wǎng)絡(luò)上找了一些教程,但是或多或少都有些問(wèn)題:

  1. 比如golang.org/x/crypto/sm4無(wú)法安裝編譯
  2. 比如C站爛大街的SM4教程,不能解決數(shù)據(jù)填充的問(wèn)題,超過(guò)16位就解密失敗了
  3. 比如如何封裝成通用的方法,供系統(tǒng)進(jìn)行調(diào)用
  4. 更多就是復(fù)制粘貼了SM4的定義,很抽象。

于是我花了2天時(shí)間研究SM4的原理和應(yīng)用,解決了上面這些問(wèn)題,整理這篇文章分享給大家,讓大家能少踩坑。

我會(huì)按照下面的順序分享這篇文章,方便大家更好的理解,如果你就是喜歡拿來(lái)主義(敏捷開發(fā)),可以直接copy底部的示例代碼,快速上手使用即可。

文章目錄

  1. SM4的優(yōu)勢(shì)
  2. IV是什么?
  3. SM4加密的方式和原理
  4. SM4的各種工作模式對(duì)比
  5. 直接可用的「代碼示例」
  6. 核心方法的源碼解析
  7. 總結(jié)回顧

1. SM4的優(yōu)勢(shì)

相比于其他加密算法,SM4加密算法具有以下幾個(gè)優(yōu)勢(shì):

  1. 高安全性:SM4是一種對(duì)稱加密算法,采用128位密鑰長(zhǎng)度,具有較高的安全性和抗攻擊性。它經(jīng)過(guò)了廣泛的安全性分析和評(píng)估,并通過(guò)了多個(gè)密碼學(xué)標(biāo)準(zhǔn)的驗(yàn)證。

  2. 高效性:SM4算法的加密和解密速度較快,適用于對(duì)大量數(shù)據(jù)進(jìn)行加密和解密的場(chǎng)景。它在硬件和軟件實(shí)現(xiàn)上都具有高效性能。

  3. 簡(jiǎn)單性:SM4算法的實(shí)現(xiàn)相對(duì)簡(jiǎn)單,代碼量較小,易于理解和使用。它的設(shè)計(jì)目標(biāo)之一是提供一種易于實(shí)現(xiàn)和部署的加密算法。

  4. 標(biāo)準(zhǔn)化SM4算法是中國(guó)國(guó)家密碼管理局發(fā)布的密碼算法標(biāo)準(zhǔn),得到了廣泛的應(yīng)用和認(rèn)可。它已成為國(guó)際上公認(rèn)的密碼算法之一。

  5. 廣泛支持:SM4算法在各種平臺(tái)和編程語(yǔ)言中都有支持和實(shí)現(xiàn),包括Go、Java、C/C++等。它可以在不同的系統(tǒng)和環(huán)境中進(jìn)行跨平臺(tái)的應(yīng)用和部署。

  6. 可擴(kuò)展性:SM4算法支持不同的工作模式和填充方式,可以根據(jù)具體需求進(jìn)行靈活配置。它可以與其他密碼算法結(jié)合使用,提供更高級(jí)別的安全保護(hù)。

小小的總結(jié)一下:SM4加密算法在安全性、高效性、簡(jiǎn)單性、標(biāo)準(zhǔn)化和廣泛支持等方面具有優(yōu)勢(shì),適用于各種數(shù)據(jù)保護(hù)和加密應(yīng)用場(chǎng)景。它是一種可靠的加密算法選擇。

2.IV是什么?

我在學(xué)習(xí)的時(shí)候看到IV就蒙了,所以有必要先說(shuō)清楚IV的概念:

Initialization Vector(IV)是一種在密碼學(xué)中使用的初始值。它是一個(gè)固定長(zhǎng)度的隨機(jī)數(shù)或者隨機(jī)生成的值,用于在加密算法中初始化密碼算法的狀態(tài)。

在加密過(guò)程中,IV的作用是引入隨機(jī)性和唯一性,以增加加密的安全性。 它與密鑰一起用于初始化密碼算法的內(nèi)部狀態(tài),確保每次加密操作都產(chǎn)生不同的輸出,即使相同的明文使用相同的密鑰進(jìn)行加密。

IV的長(zhǎng)度和使用方式取決于具體的加密算法和應(yīng)用場(chǎng)景。在使用加密算法時(shí),IV通常需要與密文一起傳輸給解密方,以便解密方能夠正確還原明文。

需要注意的是:IV本身不需要保密,可以與密文一起傳輸。然而,為了確保加密的安全性,IV應(yīng)該是隨機(jī)生成的,并且每次加密操作都應(yīng)該使用不同的IV。這樣可以防止密碼分析者通過(guò)觀察加密結(jié)果的模式來(lái)破解密鑰或者明文。

3. SM4加密的方式和原理

SM4加密算法是一種對(duì)稱加密算法,采用分組密碼的方式對(duì)數(shù)據(jù)進(jìn)行加密。

下面是SM4加密的方式和原理的簡(jiǎn)要說(shuō)明:

  1. 密鑰擴(kuò)展:SM4使用128位的密鑰,首先對(duì)密鑰進(jìn)行擴(kuò)展,生成32個(gè)子密鑰,用于后續(xù)的加密輪操作。

  2. 初始輪:將明文分為4個(gè)字節(jié)的分組,與第一個(gè)子密鑰進(jìn)行異或操作。

  3. 加密輪:SM4加密算法共進(jìn)行32輪加密操作。每輪操作包括以下步驟:

    • 字節(jié)替換:使用S盒進(jìn)行字節(jié)替換。
    • 行移位:對(duì)每個(gè)分組進(jìn)行行移位操作。
    • 列混淆:對(duì)每個(gè)分組進(jìn)行列混淆操作。
    • 輪密鑰加:將當(dāng)前輪的子密鑰與分組進(jìn)行異或操作。
  4. 最終輪:在最后一輪加密操作中,不進(jìn)行列混淆操作,只進(jìn)行字節(jié)替換、行移位和輪密鑰加操作。

  5. 輸出:經(jīng)過(guò)32輪加密操作后,得到加密后的密文。

SM4加密算法的安全性和強(qiáng)度主要來(lái)自于其復(fù)雜的輪函數(shù)和密鑰擴(kuò)展過(guò)程。它具有較高的安全性和抗攻擊性,并且在實(shí)際應(yīng)用中得到了廣泛的應(yīng)用和認(rèn)可。

需要注意的是:SM4加密算法的安全性還依賴于密鑰的保密性和隨機(jī)性。在使用SM4進(jìn)行加密時(shí),應(yīng)確保使用足夠強(qiáng)度的密鑰,并采取適當(dāng)?shù)拿荑€管理和保護(hù)措施。

4.SM4的各種工作模式對(duì)比

SM4加密算法可以使用不同的工作模式,其中包括CBC(Cipher Block Chaining)模式。

我使用的是CBC模式,下面和大家分享一下CBC模式與其他模式的對(duì)比:

  1. CBC模式(Cipher Block Chaining):
  • 特點(diǎn):每個(gè)明文塊與前一個(gè)密文塊進(jìn)行異或操作,然后再進(jìn)行加密。初始?jí)K使用初始化向量(IV)。
  • 優(yōu)點(diǎn):具有較好的安全性,能夠隱藏明文的模式和重復(fù)性。
  • 缺點(diǎn):加密過(guò)程是串行的,不適合并行處理。
  1. ECB模式(Electronic Codebook):
  • 特點(diǎn):將每個(gè)明文塊獨(dú)立加密,相同的明文塊會(huì)得到相同的密文塊。
  • 優(yōu)點(diǎn):簡(jiǎn)單、并行處理效率高。
  • 缺點(diǎn):不能隱藏明文的模式和重復(fù)性,不適合加密大量重復(fù)的數(shù)據(jù)。
  1. CFB模式(Cipher Feedback):
  • 特點(diǎn):將前一個(gè)密文塊作為輸入來(lái)加密當(dāng)前的明文塊,可以實(shí)現(xiàn)流密碼的功能。
  • 優(yōu)點(diǎn):能夠處理不定長(zhǎng)的數(shù)據(jù)流,適用于實(shí)時(shí)加密和流式傳輸。
  • 缺點(diǎn):加密過(guò)程是串行的,不適合并行處理。
  1. OFB模式(Output Feedback):
  • 特點(diǎn):將前一個(gè)密文塊作為輸入來(lái)生成密鑰流,然后與明文塊進(jìn)行異或操作,可以實(shí)現(xiàn)流密碼的功能。
  • 優(yōu)點(diǎn):能夠處理不定長(zhǎng)的數(shù)據(jù)流,適用于實(shí)時(shí)加密和流式傳輸。
  • 缺點(diǎn):加密過(guò)程是串行的,不適合并行處理。
  1. CTR模式(Counter):
  • 特點(diǎn):使用一個(gè)計(jì)數(shù)器來(lái)生成密鑰流,然后與明文塊進(jìn)行異或操作,可以實(shí)現(xiàn)流密碼的功能。
  • 優(yōu)點(diǎn):能夠處理不定長(zhǎng)的數(shù)據(jù)流,適用于實(shí)時(shí)加密和流式傳輸。并行處理效率高,適合硬件實(shí)現(xiàn)。
  • 缺點(diǎn):需要保證計(jì)數(shù)器的唯一性,否則會(huì)導(dǎo)致密鑰流的重復(fù)。

對(duì)比總結(jié):

  • CBC模式和ECB模式相比,CBC模式具有更好的安全性,能夠隱藏明文的模式和重復(fù)性,而ECB模式無(wú)法隱藏這些信息。
  • CFB模式、OFB模式和CTR模式都是流密碼模式,適用于不定長(zhǎng)的數(shù)據(jù)流加密,能夠?qū)崿F(xiàn)實(shí)時(shí)加密和流式傳輸。它們的主要區(qū)別在于密鑰流的生成方式和加密過(guò)程的并行性。
  • CFB模式和OFB模式的加密過(guò)程是串行的,不適合并行處理,而CTR模式的加密過(guò)程可以并行處理,適合硬件實(shí)現(xiàn)。

總的來(lái)說(shuō):CBC模式在安全性方面較好,能夠隱藏明文的模式和重復(fù)性。而流密碼模式(CFB、OFB和CTR)適用于不定長(zhǎng)數(shù)據(jù)流的加密,能夠?qū)崿F(xiàn)實(shí)時(shí)加密和流式傳輸,其中CTR模式具有較好的并行處理性能。選擇合適的加密模式取決于具體的應(yīng)用需求和安全性要求。

5. 直接可用的「代碼示例」

我一直認(rèn)為可以通過(guò)復(fù)制粘貼,直接跑通的示例代碼才是好代碼。

沒(méi)錯(cuò),我的代碼示例就是這樣,并且關(guān)鍵代碼都寫好了注釋:

package main

import (
	"bytes"
	"crypto/cipher"
	"encoding/hex"
	"fmt"
	"github.com/tjfoc/gmsm/sm4"
)

// SM4加密
func SM4Encrypt(data string) (result string, err error) {
	//字符串轉(zhuǎn)byte切片
	plainText := []byte(data)
	//建議從配置文件中讀取秘鑰,進(jìn)行統(tǒng)一管理
	SM4Key := "Uv6tkf2M3xYSRuFv"
	//todo 注意:iv需要是隨機(jī)的,進(jìn)一步保證加密的安全性,將iv的值和加密后的數(shù)據(jù)一起返回給外部
	SM4Iv := "04TzMuvkHm_EZnHm"
	iv := []byte(SM4Iv)
	key := []byte(SM4Key)
	//實(shí)例化sm4加密對(duì)象
	block, err := sm4.NewCipher(key)
	if err != nil {
		panic(err)
	}
	//明文數(shù)據(jù)填充
	paddingData := paddingLastGroup(plainText, block.BlockSize())
	//聲明SM4的加密工作模式
	blockMode := cipher.NewCBCEncrypter(block, iv)
	//為填充后的數(shù)據(jù)進(jìn)行加密處理
	cipherText := make([]byte, len(paddingData))
	//使用CryptBlocks這個(gè)核心方法,將paddingData進(jìn)行加密處理,將加密處理后的值賦值到cipherText中
	blockMode.CryptBlocks(cipherText, paddingData)
	//加密結(jié)果使用hex轉(zhuǎn)成字符串,方便外部調(diào)用
	cipherString := hex.EncodeToString(cipherText)
	return cipherString, nil
}

// SM4解密 傳入string 輸出string
func SM4Decrypt(data string) (res string, err error) {
	//秘鑰
	SM4Key := "Uv6tkf2M3xYSRuFv"
	//iv是Initialization Vector,初始向量,
	SM4Iv := "04TzMuvkHm_EZnHm"
	iv := []byte(SM4Iv)
	key := []byte(SM4Key)
	block, err := sm4.NewCipher(key)
	if err != nil {
		panic(err)
	}
	//使用hex解碼
	decodeString, err := hex.DecodeString(data)
	if err != nil {
		return "", err
	}
	//CBC模式 優(yōu)點(diǎn):具有較好的安全性,能夠隱藏明文的模式和重復(fù)性。 缺點(diǎn):加密過(guò)程是串行的,不適合并行處理。
	blockMode := cipher.NewCBCDecrypter(block, iv)
	//下文有詳解這段代碼的含義
	blockMode.CryptBlocks(decodeString, decodeString)
	//去掉明文后面的填充數(shù)據(jù)
	plainText := unPaddingLastGroup(decodeString)
	//直接返回字符串類型,方便外部調(diào)用
	return string(plainText), nil
}

// 明文數(shù)據(jù)填充
func paddingLastGroup(plainText []byte, blockSize int) []byte {
	//1.計(jì)算最后一個(gè)分組中明文后需要填充的字節(jié)數(shù)
	padNum := blockSize - len(plainText)%blockSize
	//2.將字節(jié)數(shù)轉(zhuǎn)換為byte類型
	char := []byte{byte(padNum)}
	//3.創(chuàng)建切片并初始化
	newPlain := bytes.Repeat(char, padNum)
	//4.將填充數(shù)據(jù)追加到原始數(shù)據(jù)后
	newText := append(plainText, newPlain...)
	return newText
}

// 去掉明文后面的填充數(shù)據(jù)
func unPaddingLastGroup(plainText []byte) []byte {
	//1.拿到切片中的最后一個(gè)字節(jié)
	length := len(plainText)
	lastChar := plainText[length-1]
	//2.將最后一個(gè)數(shù)據(jù)轉(zhuǎn)換為整數(shù)
	number := int(lastChar)
	return plainText[:length-number]
}

func main() {
	//待加密的數(shù)據(jù) 模擬18位的身份證號(hào)
	plainText := "131229199907097219"
	//SM4加密
	decrypt, err := SM4Encrypt(plainText)
	if err != nil {
		return
	}
	fmt.Printf("sm4加密結(jié)果:%s\n", decrypt)
	//cipherString := hex.EncodeToString(cipherText)
	//fmt.Printf("sm4加密結(jié)果轉(zhuǎn)成字符串:%s\n", cipherString)

	//SM4解密
	sm4Decrypt, err := SM4Decrypt(decrypt)
	if err != nil {
		return
	}
	fmt.Printf("plainText:%s\n", sm4Decrypt)
	flag := plainText == sm4Decrypt
	fmt.Println("解密是否成功:", flag)
}

運(yùn)行結(jié)果如下:

6. 核心方法的源碼解析

細(xì)心的小伙伴應(yīng)該又發(fā)現(xiàn),(或者通過(guò)你真實(shí)的敲代碼一定能發(fā)現(xiàn)。

在加密和解密部分有一個(gè)CryptBlocks()方法,我們來(lái)解析一下這段源碼:

	// CryptBlocks encrypts or decrypts a number of blocks. The length of
	// src must be a multiple of the block size. Dst and src must overlap
	// entirely or not at all.
	//
	// If len(dst) < len(src), CryptBlocks should panic. It is acceptable
	// to pass a dst bigger than src, and in that case, CryptBlocks will
	// only update dst[:len(src)] and will not touch the rest of dst.
	//
	// Multiple calls to CryptBlocks behave as if the concatenation of
	// the src buffers was passed in a single run. That is, BlockMode
	// maintains state and does not reset at each CryptBlocks call.
	CryptBlocks(dst, src []byte)

翻譯翻譯

CryptBlocks方法用于加密或解密多個(gè)數(shù)據(jù)塊。src的長(zhǎng)度必須是塊大小的倍數(shù)。dst和src必須完全重疊或完全不重疊。

如果len(dst) < len(src),CryptBlocks方法應(yīng)該引發(fā)panic。允許傳遞比src更大的dst,此時(shí)CryptBlocks只會(huì)更新dst[:len(src)],不會(huì)觸及dst的其余部分。

在這段代碼注釋中,dst表示目標(biāo)緩沖區(qū),用于存儲(chǔ)加密或解密后的結(jié)果。src表示源緩沖區(qū),包含要加密或解密的數(shù)據(jù)。這兩個(gè)緩沖區(qū)可以是相同的內(nèi)存區(qū)域,也可以是不同的內(nèi)存區(qū)域。CryptBlocks方法會(huì)將src中的數(shù)據(jù)進(jìn)行加密或解密,并將結(jié)果存儲(chǔ)在dst中。

需要注意的是,dst和src的長(zhǎng)度必須是塊大小的倍數(shù),否則CryptBlocks方法可能會(huì)引發(fā)panic。如果dst的長(zhǎng)度小于src的長(zhǎng)度,CryptBlocks方法只會(huì)更新dst的前l(fā)en(src)個(gè)字節(jié),并不會(huì)修改dst的其余部分。

此外,CryptBlocks方法可以多次調(diào)用,多次調(diào)用的效果相當(dāng)于將所有src緩沖區(qū)的數(shù)據(jù)連接在一起,然后進(jìn)行加密或解密。這意味著BlockMode會(huì)保持狀態(tài),并且不會(huì)在每次CryptBlocks調(diào)用時(shí)重置。

如果你看注釋翻譯理解起來(lái)還是比較抽象的話,我換個(gè)方式介紹一下:

用我的話來(lái)說(shuō)

在SM4加密中,CryptBlocks()方法是用于加密或解密多個(gè)數(shù)據(jù)塊的方法。它是SM4算法中的一個(gè)核心函數(shù)。

具體來(lái)說(shuō),CryptBlocks()方法接受一個(gè)源數(shù)據(jù)緩沖區(qū)(src)和一個(gè)目標(biāo)數(shù)據(jù)緩沖區(qū)(dst),并對(duì)源數(shù)據(jù)進(jìn)行加密或解密操作,將結(jié)果存儲(chǔ)在目標(biāo)數(shù)據(jù)緩沖區(qū)中。

在加密過(guò)程中,CryptBlocks()方法會(huì)將源數(shù)據(jù)分成多個(gè)數(shù)據(jù)塊,然后對(duì)每個(gè)數(shù)據(jù)塊進(jìn)行加密操作,并將結(jié)果存儲(chǔ)在目標(biāo)數(shù)據(jù)緩沖區(qū)中。加密過(guò)程中使用的密鑰和其他參數(shù)由SM4算法的實(shí)現(xiàn)確定。

在解密過(guò)程中,CryptBlocks()方法會(huì)對(duì)源數(shù)據(jù)緩沖區(qū)中的數(shù)據(jù)塊進(jìn)行解密操作,并將解密后的結(jié)果存儲(chǔ)在目標(biāo)數(shù)據(jù)緩沖區(qū)中。

需要注意的是:CryptBlocks()方法要求源數(shù)據(jù)緩沖區(qū)和目標(biāo)數(shù)據(jù)緩沖區(qū)的長(zhǎng)度必須是SM4算法的塊大小的倍數(shù)。否則,可能會(huì)引發(fā)錯(cuò)誤或產(chǎn)生不可預(yù)測(cè)的結(jié)果。

CryptBlocks()方法是SM4加密算法中用于加密或解密多個(gè)數(shù)據(jù)塊的關(guān)鍵方法,它實(shí)現(xiàn)了SM4算法的核心功能。

7. 總結(jié)回顧

我之前也寫過(guò)一篇解密解密的文章,歡迎大家閱讀指教:保障網(wǎng)絡(luò)請(qǐng)求數(shù)據(jù)傳輸?shù)陌踩浴⒁恢滦院头来鄹模簩?duì)稱加密與非對(duì)稱加密的結(jié)合

相信你讀了這篇文章能對(duì)SM4加密有個(gè)整體理解,通過(guò)我在文章中提供的示例代碼可以快速跑通加密和解密流程。我還帶著你分析了CryptBlocks()源碼的作用。

歡迎大家收藏、點(diǎn)贊、轉(zhuǎn)發(fā)。你的關(guān)注,是我更文的最大動(dòng)力!

歡迎關(guān)注 ?

我的微信:wangzhongyang1993

視頻號(hào):王中陽(yáng)Go

公眾號(hào):程序員升職加薪之旅文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-499335.html

到了這里,關(guān)于保護(hù)數(shù)據(jù)隱私:深入探索Golang中的SM4加密解密算法的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • js sm4實(shí)現(xiàn)加密解密

    2023.10.25今天我學(xué)習(xí)了如何使用sm4進(jìn)行加密解密: 注意:前端和后端的編碼必須相同才能使用,不然會(huì)出現(xiàn)空字符串的錯(cuò)誤。 一、首先安裝sm4.js包: package.json中的版本:?(安裝失敗的話可以直接復(fù)制下面的版本然后npm install) 二、main.js中全局引入或局部引入: 這個(gè)是全局

    2024年01月18日
    瀏覽(92)
  • SpringBoot實(shí)現(xiàn)國(guó)密SM4加密、解密

    SM4.0(原名SMS4.0)是中華人民共和國(guó)政府采用的一種分組密碼標(biāo)準(zhǔn),由國(guó)家密碼管理局于2012年3月21日發(fā)布。相關(guān)標(biāo)準(zhǔn)為“GM/T 0002-2012《SM4分組密碼算法》(原SMS4分組密碼算法)”。 在商用密碼體系中,SM4主要用于數(shù)據(jù)加密,其算法公開,分組長(zhǎng)度與密鑰長(zhǎng)度均為128bit,加密算

    2024年02月07日
    瀏覽(92)
  • 國(guó)密SM4對(duì)稱加密Java加解密

    提示:國(guó)密SM4對(duì)稱加密Java加解密 國(guó)家密碼管理局 參考博文 SM4.0(原名SMS4.0)是中華人民共和國(guó)政府采用的一種分組密碼標(biāo)準(zhǔn),由國(guó)家密碼管理局于2012年3月21日發(fā)布。相關(guān)標(biāo)準(zhǔn)為“GM/T 0002-2012《SM4分組密碼算法》(原SMS4分組密碼算法)”。 SM4 代碼如下(示例): 在密碼學(xué)中

    2024年02月11日
    瀏覽(85)
  • 前端使用國(guó)密SM4進(jìn)行加密、解密

    前端使用國(guó)密SM4進(jìn)行加密、解密

    前端/后端使用 國(guó)密SM4 進(jìn)行加密/解密, 【注意】前后端配合加解密時(shí),需要我們 自定義密鑰 ,一般由后端提供 下載 sm4util 依賴 sm4util 依賴使用說(shuō)明 使用 - ECB 模式加解密 后端代碼參考:https://blog.csdn.net/qq_48922459/article/details/122130283 這種辦法好像只能使用默認(rèn)密鑰 key,不能

    2023年04月23日
    瀏覽(104)
  • 深入探索服裝網(wǎng)商品詳情API:實(shí)時(shí)數(shù)據(jù)獲取、安全與隱私保護(hù)及商業(yè)價(jià)值實(shí)踐

    在進(jìn)行實(shí)時(shí)數(shù)據(jù)獲取之前,你需要做以下準(zhǔn)備工作: 注冊(cè)賬號(hào):在平臺(tái)上??注冊(cè)賬號(hào)??,以獲得API的訪問(wèn)權(quán)限。 獲取API密鑰:在服裝網(wǎng)的開放平臺(tái)后臺(tái),你可以獲取到API的訪問(wèn)密鑰(通常是一個(gè)令牌),用于身份驗(yàn)證。 了解API文檔:查閱服裝網(wǎng)提供的API文檔,了解API的

    2024年02月03日
    瀏覽(20)
  • 醫(yī)保移動(dòng)支付加密解密請(qǐng)求工具封裝【國(guó)密SM2SM4】

    醫(yī)保移動(dòng)支付加密解密請(qǐng)求工具封裝【國(guó)密SM2SM4】

    醫(yī)保移動(dòng)支付加密解密請(qǐng)求工具封裝 定點(diǎn)醫(yī)藥機(jī)構(gòu)向地方移動(dòng)支付中心發(fā)起費(fèi)用明細(xì)上傳、支付下單、醫(yī)保退費(fèi)等交易時(shí)需要發(fā)送密文,由于各大醫(yī)療機(jī)構(gòu)廠商的開發(fā)語(yǔ)各不相同,可能要有java的、c#的、python的、pb的、nodjs的、php的、還可能有Delphi的等。。。。很多開發(fā)語(yǔ)言

    2024年01月21日
    瀏覽(123)
  • java運(yùn)用SM4國(guó)密算法對(duì)文件的加密與解密的實(shí)現(xiàn)

    java運(yùn)用SM4國(guó)密算法對(duì)文件的加密與解密的實(shí)現(xiàn)

    首先我們?cè)趇dae開發(fā)工具導(dǎo)入導(dǎo)入pom.xml的兩個(gè)必要依賴 ?jar包下載地址:百度網(wǎng)盤 請(qǐng)輸入提取碼?? npn8 ?圖上systemPath 為jar包的文件路徑,我們需要使用以下的路徑存儲(chǔ)jar包。(也可以自己設(shè)置) java包的文件路徑如圖所示 然后創(chuàng)建所需要加密的文件 ,需要加密的文件內(nèi)容,

    2024年03月27日
    瀏覽(92)
  • C# 實(shí)現(xiàn) 國(guó)密SM4/ECB/PKCS7Padding對(duì)稱加密解密

    C# 實(shí)現(xiàn) 國(guó)密SM4/ECB/PKCS7Padding對(duì)稱加密解密

    C#?實(shí)現(xiàn) 國(guó)密SM4/ECB/PKCS7Padding對(duì)稱加密解密,為了演示方便本問(wèn)使用的是Visual Studio 2022 來(lái)構(gòu)建代碼的 1、新建項(xiàng)目,之后選擇 項(xiàng)目 鼠標(biāo)右鍵選擇? 管理NuGet程序包管理,輸入??BouncyCastle 回車 添加BouncyCastle程序包 2、代碼如下:CBC模式 代碼如下:ECB模式 3、運(yùn)行 4、SM4密碼算法

    2024年02月11日
    瀏覽(147)
  • 密碼算法(SM1、SM2、SM3、SM4、同態(tài)加密、密態(tài)計(jì)算、隱私計(jì)算和安全多方計(jì)算)

    密碼算法(SM1、SM2、SM3、SM4、同態(tài)加密、密態(tài)計(jì)算、隱私計(jì)算和安全多方計(jì)算)

    SM1、SM2、SM3和SM4 為了保障商用密碼的安全性,國(guó)家密碼局制定了一系列密碼標(biāo)準(zhǔn),包括:SM1(SCB2)、SM2、SM3、SM4、SM7、SM9、祖沖之密碼算法(ZUC) 等。 SM1、SM4、SM7、祖沖之密碼(ZUC)是對(duì)稱算法。 SM2、SM9是非對(duì)稱算法。 SM3是哈希算法。 SM1、SM7算法不公開,調(diào)用該算法時(shí),

    2024年02月03日
    瀏覽(26)
  • SM1、SM2、SM3、SM4、同態(tài)加密、密態(tài)計(jì)算、隱私計(jì)算和安全多方計(jì)算的概念

    SM1、SM2、SM3、SM4、同態(tài)加密、密態(tài)計(jì)算、隱私計(jì)算和安全多方計(jì)算的概念

    為了保障商用密碼的安全性,國(guó)家密碼局制定了一系列密碼標(biāo)準(zhǔn),包括:SM1(SCB2)、SM2、SM3、SM4、SM7、SM9、祖沖之密碼算法(ZUC) 等。 SM1、SM4、SM7、祖沖之密碼(ZUC)是 對(duì)稱算法 。 SM2、SM9是 非對(duì)稱算法 。 SM3是 哈希算法 。 SM1、SM7算法不公開,調(diào)用該算法時(shí),需要通過(guò) 加

    2024年02月03日
    瀏覽(25)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包