目前我正在研究一個使用橢圓曲線的項目。請給我一個解決方案,確定一個點是否在橢圓曲線上?以及如何在橢圓曲線上獲得點橢圓曲線點
橢圓曲線點
回答
檢查點是否在橢圓曲線上很容易。只需檢查您的點(x,y)
是否滿足定義橢圓曲線的公式:y^2 = x^3 + ax + b
(請記住在正確的字段中執行計算)。
使用BouncyCastle的,你可以做這樣的:
ECCurve curve = //...
ECFieldElement x = //...
ECFieldElement y = //...
ECFieldElement a = curve.getA();
ECFieldElement b = curve.getB();
ECFieldElement lhs = y.multiply(y);
ECFieldElement rhs = x.multiply(x).multiply(x).add(a.multiply(x)).add(b);
boolean pointIsOnCurve = lhs.equals(rhs);
您已經標記與密碼的問題,所以我想你是問關於有限域橢圓曲線。曲線將有一個發生器,g和一個訂單。 要獲得一個隨機點,只需生成一個隨機整數,即x,介於0和(order-1)之間,並選擇x * g。
則可以使用BouncyCastle的是這樣做的:
X9ECParameters x9 = NISTNamedCurves.getByName("P-224"); // or whatever curve you want to use
ECPoint g = x9.getG();
BigInteger n = x9.getN();
int nBitLength = n.bitLength();
BigInteger x;
do
{
x = new BigInteger(nBitLength, random);
}
while (x.equals(ZERO) || (x.compareTo(n) >= 0));
ECPoint randomPoint = g.multiply(x);
有關,請提供示例代碼以獲得使用彈性城堡的橢圓曲線上的點.... .. –
@ user605343:完成 –
@Rasmus,當你有堆棧溢出時需要接受教育。 –
- 1. 橢圓曲線Java
- 2. openssl橢圓曲線
- 3. 爲橢圓曲線密碼學生成橢圓曲線的基點(G)
- 4. 橢圓曲線上的點的數量
- 5. 橢圓曲線和點基數
- 6. 橢圓曲線中的點乘法
- 7. Python - matplotlib橢圓曲線
- 8. 橢圓曲線密碼學
- 9. 橢圓曲線加密
- 10. 彎曲線形成圓形和橢圓
- 11. 橢圓和線交點JAVA
- 12. Sage數學奇點奇點橢圓曲線
- 13. 創建橢圓曲線邊框
- 14. Android上的Bouncycastle橢圓曲線加密
- 15. PHP中的素數,橢圓曲線
- 16. PyECC示例 - Python橢圓曲線密碼
- 17. 橢圓曲線乘法函數
- 18. openssl橢圓曲線:EC_POINT_add返回錯誤
- 19. Microsoft PlayReady DRM P160橢圓曲線參數
- 20. 在R中繪製橢圓/雙曲線
- 21. Diffie-Hellman橢圓曲線私鑰長度
- 22. Java 7 keytool橢圓曲線加密
- 23. 橢圓曲線ElGamal Java實現
- 24. c#中的橢圓曲線因子4.0
- 25. java中的橢圓曲線密碼學
- 26. 在iOS中的橢圓曲線加密
- 27. MATLAB曲線擬合(橢圓形)
- 28. OpenSSL 1.0:刪除橢圓曲線擴展
- 29. Android:InvalidKeySpecException:橢圓曲線例程:EC_GROUP_new_by_curve_name:UNKNOWN_GROUP
- 30. 在橢圓曲線密碼術中劃分點
是不是有更多的數學問題嗎? 「我如何檢查一個點是否在曲線上?」 – Thomas
通過標籤判斷,我猜OP要求與http://en.wikipedia.org/wiki/Elliptic_curve_cryptography –