第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

Golang 中的確定性 RSA 加密 - 如何在多次加密下為給定消息獲得相同的結(jié)果

Golang 中的確定性 RSA 加密 - 如何在多次加密下為給定消息獲得相同的結(jié)果

Go
波斯汪 2022-12-05 17:19:43
對(duì)于下面的RSA加密代碼,每次對(duì)同一條消息進(jìn)行加密時(shí),結(jié)果都會(huì)不同。我發(fā)現(xiàn)這是由于根據(jù)doc使它更安全rand.Reader的功能。但是每次進(jìn)行 RSA 加密時(shí),我都希望相同的消息得到相同的結(jié)果。如何使用 Golang 做到這一點(diǎn)?有一個(gè)類(lèi)似的問(wèn)題,但似乎答案與如何實(shí)現(xiàn)這一目標(biāo)無(wú)關(guān)。謝謝!rsa.EncryptOAEPpackage mainimport (    "crypto"    "crypto/rand"    "crypto/rsa"    "crypto/sha256"    "fmt")func main() {    privateKey, err := rsa.GenerateKey(rand.Reader, 1024)    if err != nil {        panic(err)    }    publicKey := privateKey.PublicKey      message := "super secret message"    encryptedBytes, err := rsa.EncryptOAEP(        sha256.New(),        rand.Reader,        &publicKey,        []byte(message),        nil)    if err != nil {        panic(err)    }    fmt.Println("encrypted bytes: ", encryptedBytes)   }更新:我想做確定性 RSA,因?yàn)樵谑褂眯枰_定性輸出的 Hyperledger Fabric 鏈代碼(區(qū)塊鏈智能合約)時(shí),我想要確定性加密結(jié)果。謝謝大家的警告。那么我想我應(yīng)該關(guān)注如何在鏈代碼中啟用這些加密算法。相關(guān)問(wèn)題供后來(lái)者參考是否有幫助:)
查看完整描述

1 回答

?
一只萌萌小番薯

TA貢獻(xiàn)1795條經(jīng)驗(yàn) 獲得超7個(gè)贊

正如您所讀到的,這種方法破壞了算法的非常重要的安全特性,并且絕不能用于保護(hù)任何類(lèi)型的實(shí)時(shí)系統(tǒng)。但是,對(duì)于某些類(lèi)型的測(cè)試和開(kāi)發(fā),它可能很有用。我會(huì)假設(shè)這就是你的意思。


關(guān)鍵是它的熵rsa.EncryptOAEP接受任意io.Reader值。它不要求這是一個(gè)rand.Reader. 如果您不關(guān)心系統(tǒng)的安全性,可以隨心所欲。例如,您可以構(gòu)建一個(gè)永遠(yuǎn)只返回零的“零讀取器”:


type zeroReader struct{}

func (z zeroReader) Read(p []byte) (n int, err error) {

    for i, _ := range p {

        p[i] = 0

    }

    n = len(p)

    return

}

這樣,您就可以傳遞zeroReader{}熵:


// !!! The security of this call is completely broken !!!

// !!! It must never be used on live data             !!!

encryptedBytes, err := rsa.EncryptOAEP(

    sha256.New(),

    zeroReader{}, // !!! I am intentionally breaking the security here !!!

    &publicKey,

    []byte(message),

    nil)

如果您確實(shí)打算將它用于任何類(lèi)型的實(shí)時(shí)數(shù)據(jù),那么您必須重新設(shè)計(jì)您的系統(tǒng)以不需要它。就像您鏈接的問(wèn)題一樣,人們經(jīng)常嘗試這樣做是因?yàn)樗麄冋`解了 RSA。不要那樣做。


查看完整回答
反對(duì) 回復(fù) 2022-12-05
  • 1 回答
  • 0 關(guān)注
  • 191 瀏覽
慕課專(zhuān)欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢(xún)優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)