1 回答

TA貢獻1795條經驗 獲得超7個贊
正如您所讀到的,這種方法破壞了算法的非常重要的安全特性,并且絕不能用于保護任何類型的實時系統。但是,對于某些類型的測試和開發,它可能很有用。我會假設這就是你的意思。
關鍵是它的熵rsa.EncryptOAEP接受任意io.Reader值。它不要求這是一個rand.Reader. 如果您不關心系統的安全性,可以隨心所欲。例如,您可以構建一個永遠只返回零的“零讀取器”:
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)
如果您確實打算將它用于任何類型的實時數據,那么您必須重新設計您的系統以不需要它。就像您鏈接的問題一樣,人們經常嘗試這樣做是因為他們誤解了 RSA。不要那樣做。
- 1 回答
- 0 關注
- 184 瀏覽
添加回答
舉報