2012-06-22 216 views

回答

3

鑑於 「幾乎素」 爲了一個橢圓曲線u = kr,你應該:

  1. 生成一個隨機點P
  2. 設置G = kP
  3. 如果G = 0轉到1
  4. 確認rG不是0(如果它是0,曲線di d沒有訂單kr)。
  5. 否則G是訂單r
+0

謝謝! 你能否澄清一下k和r究竟是什麼?基數或點數或輔助因子?我用來閱讀有關橢圓曲線的文章使用了不同的命名約定。 從我的數字來看,k是順序,r是點數。我對嗎?另外,如何設置G = kP?對不起,這樣的菜鳥。 –

+1

k * r是橢圓曲線組的階數。 r是一個大素數,k是小因子。你需要一個命令點r,Rasmus提供的程序給你一個。 –

0

這是針對Java,C或任何相同....

讓我先假設你創建了一個ECC域與黃金集團階q自己,想用它來加密。 然後選擇一個隨機的x座標,然後從weierstrass形式的橢圓曲線方程計算y^2。 希望你選擇了一個3模4的質數模p。在這種情況下,如果存在,確定平方根p mod是微不足道的。如果它不存在,請嘗試另一個x。 我很少需要2次以上的嘗試,主要是第一次嘗試導致已經在新創建的域中有效的生成器。

您可以使用我的開放源代碼程序「Academic Signature」來達到此目的。 Manual and link to download page。 如果您將新域導入域列表,您可以爲該域嘗試任意生成器。在導入學術簽名後檢查發生器。如果它不是橢圓曲線上的有效點,則會增加測試點的x座標,直到遇到有效的x y座標對。如果隨後導出域,則新的生成器將包含在域參數的純文本文件中。

在這個頁面上ECC Domain page你可以找到我創建的一些域,我用上面提到的程序來獲取包含一些「十六進制字」的生成器。

如果您自己沒有創建域,如果它是主要順序的,並且在某些實現中已經有了一個用於它的生成器,則更容易:將舊實現生成器與隨機數相乘,給自己一個新的發生器,你可以使用它來分隔你的密鑰空間和其他實現的密鑰空間。

Registers Michael Anders