1 回答
TA貢獻(xiàn)1818條經(jīng)驗(yàn) 獲得超8個(gè)贊
正如 blackgreen 所暗示的那樣,這可能是因?yàn)槟诘貓D中存儲(chǔ)了一個(gè)指針,而地圖中的公鑰在語義上是等效的,但不是索引。==
你沒有說你如何獲取函數(shù)的參數(shù),但假設(shè)這是在某種服務(wù)器上,其中私鑰是從線路或文件中解析的,你將獲得一個(gè)新分配的對(duì)象。這將出現(xiàn)在地圖中引用的內(nèi)存中的其他位置,因此即使模量和指數(shù)相同,指針也會(huì)有所不同。該類型具有可用于比較的 Equal 方法,因?yàn)榇朔椒ú黄鹱饔谩?code>==
有兩種簡單的方法可以獲得我懷疑你想要的行為:
使用切片并循環(huán)訪問,調(diào)用
。Equal(keyClientPubkey)在每個(gè),而不是一個(gè)映射。只要您擁有的公鑰少于數(shù)百個(gè),這可能就可以了。(基準(zhǔn)測試可以告訴您環(huán)境中的確切斷點(diǎn))創(chuàng)建一個(gè)幫助器函數(shù),該函數(shù)采用 a 并返回可用作鍵的可比較內(nèi)容(例如字符串)。一個(gè)簡單的版本是類似于 .使用它,您可以基于字符串表示形式存儲(chǔ)和檢索公鑰。
toMapKey*rsa.PublicKeyreturn fmt.Sprintf("n=%x|e=%x", pk.N, pk.E)
注意:如果這是安全敏感代碼路徑(例如,如果對(duì)手可以隨意觸發(fā)它),我不建議使用上述任何一種方法,因?yàn)槟赡軙?huì)泄露計(jì)時(shí)信息。如果是這種情況,請(qǐng)向安全專家尋求幫助,:)。如果你只是在啟動(dòng)期間這樣做,那可能沒問題。
- 1 回答
- 0 關(guān)注
- 161 瀏覽
添加回答
舉報(bào)
