RFC7748中规定的curve25519和curve448(goldilocks)的参考实现
eccsnacks的Python项目详细描述
此包包含curve25519的简单引用实现 和曲线448(金发姑娘),如 RFC7748。
警告:如果定时,则不允许使用此实现 不变性很重要。此包的未来版本可能实现 后端。
ecccantings是一个游戏 ecchacks,DJB和Tanja的一个很酷的网站 兰格。
安装
pip install eccsnacks
用法
这些示例演示Diffie-Hellman operation 对于每个曲线。
曲线25519:
fromosimporturandomfromeccsnacks.curve25519importscalarmult,scalarmult_base# Private keys in Curve25519 can be any 32-byte string.a=urandom(32)a_pub=scalarmult_base(a)b=urandom(32)b_pub=scalarmult_base(b)# perform Diffie-Hellman computation for alice and bobk_ab=scalarmult(a,b_pub)k_ba=scalarmult(b,a_pub)# keys should be the sameassertk_ab==k_ba
曲线448:
fromosimporturandomfromeccsnacks.curve448importscalarmult,scalarmult_base# Private keys in Curve448 can be any 32-byte string.a=urandom(56)a_pub=scalarmult_base(a)b=urandom(56)b_pub=scalarmult_base(b)# perform Diffie-Hellman computation for alice and bobk_ab=scalarmult(a,b_pub)k_ba=scalarmult(b,a_pub)# keys should be the sameassertk_ab==k_ba
待办事项
- 两条曲线在c中的快速定时不变量实现。
- 更多曲线。
致谢
- 马修·登普斯基 slownacl 它最初在实现curve25519时用作基线。
- 曲线25519的DJB
- Mike Hamburg代表Curve448