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。不要那樣做。
- 1 回答
- 0 關(guān)注
- 191 瀏覽
添加回答
舉報(bào)