0

我正在使用BouncyCastles Java API並且想要使用McEliece加密。瀏覽各種紙張以找到好的參數(例如How to choose McEliece's parameters?)後,我現在遇到了問題,我沒有看到使用BouncyCastle API設置這些參數的可能性。用BouncyCastle的元組(m,t,poly)定義McEliece參數元組(n,k,t)

在所有論文中,參數集是一個三元組:(n,k,t)。但是,隨着BouncyCastle的,我只能指定3元組(M,T,聚)爲密鑰對生成與:

new McElieceCCA2Parameters(m, t, poly) 

如何它們對應於(N,K,T)參數組?

+0

不確定你指的是哪個bouncycastle版本,但[在1.52'McElieceCCA2Parameters'](http://grepcode.com/file/repo1.maven.org/maven2/org.bouncycastle/bcprov-jdk15on/1.52 /org/bouncycastle/pqc/crypto/mceliece/McElieceCCA2Parameters.java#McElieceCCA2Parameters)至多需要'm'和't'。 –

+0

我使用的是1.55版本;-)但是,當1.52版本中只有2個參數時,如何指定它們,以便獲得一個設置。 *(n,k,t)* = *(6624,5129,118)*? – Ph3n1x

回答

1

我相信m,tpoly定義了一個Goppa代碼。 m表示GF2上的多項式的程度,其在代碼內生成支持。 n表示支持的元素數量/加密消息的長度(以位爲單位)。我快速瀏覽了McElieceParameters,他們使用完全支持。這意味着n總是等於2^mt,代碼可以糾正的錯誤數量必須從區間[2; (n - 1)/m]k中選擇,隱含地等於n - m*t

+0

謝謝你的回答,但我完全不理解它。兩個元組中的「t」是否相同?當我用*(n,k,t)*爲*(6624,5129,118)*解出m時,我得到m = 12.67。但'm'必須是一個整數。 你可能只是提供一個簡單的例子嗎?例如。我如何指定'(m,t,poly)'來獲得'(n,k,t)'= *(6624,5129,118)*? – Ph3n1x

+0

據我所知,BouncyCastle計算'n = 1 << m',所以不可能讓'n'成爲2的冪值。我錯了嗎? – Ph3n1x

+0

@ Ph3n1x對不完整的答案抱歉。是的,'(n,k,t)'和'(m,t,poly)'符號中't'是相同的。你是對的,n始終是2的力量。從我所看到的彈性城堡庫不允許你需要的設置。 –

相關問題