Let's consider the following example. Using Python library tinyec I can write the following code:
def compress(pubKey):
return hex(pubKey.x) + hex(pubKey.y % 2)[2:]
curve = registry.get_curve('brainpoolP256r1')
alicePrivKey = secrets.randbelow(curve.field.n)
alicePubKey = alicePrivKey * curve.g
bobPrivKey = secrets.randbelow(curve.field.n)
bobPubKey = bobPrivKey * curve.g
print("Now exchange the public keys (e.g. through Internet)")
aliceSharedKey = alicePrivKey * bobPubKey
print("Alice shared key:", compress(aliceSharedKey))
bobSharedKey = bobPrivKey * alicePubKey
In this way Alice and Bob are able to derive a shared secret through the Internet. Now, I need to know if I can do the same thing with the ed25519 curve, since I was not able to found any kind of libraries.
So, I am interested in finding a way to do this type of operation safely. How could I do ? What are the best practices for this specific operation?
Thanks
question from:
https://stackoverflow.com/questions/65841175/python-implementation-of-ed25519-shared-secret-agreement 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…