博客
关于我
区块链 - 比特币加密算法之椭圆曲线
阅读量:203 次
发布时间:2019-02-28

本文共 1140 字,大约阅读时间需要 3 分钟。

椭圆曲线加密算法是密码学中的核心技术,特别是在比特币系统中,椭圆曲线乘法(ECDSA)是私钥生成和公钥签名的基础。比特币选择了secp256k1曲线,这是一种特定的椭圆曲线参数,结合了优化的数学常数。

椭圆曲线的定义

椭圆曲线是一种满足方程 ( y^2 = x^3 + ax + b ) 的点集,其中:

  • ( x ) 和 ( y ) 是实数坐标。
  • ( a ) 和 ( b ) 是常数,满足 ( 4a^2 - 27b^3 \neq 0 )。
  • 包含无穷远点(定义为0)。
  • 椭圆曲线的形状根据 ( a ) 和 ( b ) 的值有所不同。比如,secp256k1曲线是一个经过优化的椭圆曲线,适合于高安全性的加密应用。

    椭圆曲线上的点加法

    椭圆曲线加法是基于几何意义上的加法,涉及曲线上的点和直线交点。假设一条直线与椭圆曲线交于三个点 ( P, Q, R ),则有 ( P + Q = R )(其中 ( R ) 是无穷远点)。具体操作如下:

  • 当 ( Q ) 是无穷远点时,( P + Q = P )。
  • 当 ( P ) 和 ( Q ) 关于X轴对称时,( P + Q = 0 )。
  • 当 ( P ) 和 ( Q ) 不是对称点时,( P + Q ) 会是另一个点 ( R )。
  • 当 ( P = Q ) 时,( P + P = -R ),即 ( 2P = -R )。
  • 椭圆曲线上的点数乘

    椭圆曲线上的点数乘是通过倍乘法实现的。例如,计算 ( 8G ) 可以通过连续的加法得到,但这会导致大量计算。倍乘法通过以下步骤优化:

  • 计算 ( -2G )(即过 ( G ) 做切线的交点)。
  • 将 ( -2G ) 上下翻转,得到 ( 2G )。
  • 重复类似步骤计算 ( 4G, 8G ) 等。
  • 有限域椭圆曲线

    为了实现离散的点集,椭圆曲线的方程在有限域 ( \mathbb{F}_p ) 上进行模运算,其中 ( p ) 是质数。椭圆曲线上的点 ( (x, y) ) 满足:[ y^2 = x^3 - 7x + 10 \mod p ]

    不同质数 ( p ) 会产生不同的有限域椭圆曲线,点数随着 ( p ) 的增大而增加。例如,当 ( p = 3 ) 时,椭圆曲线上的点集非常有限。

    有限域椭圆曲线的直线

    在有限域椭圆曲线中,直线方程为:[ y = mx + b \mod p ]其中 ( m ) 是斜率,( b ) 是截距。直线与椭圆曲线的交点个数决定了加法和乘法的性质。

    代数加法

    在有限域椭圆曲线中,代数加法通过以下公式进行:[ y = m x + b ]其中 ( m ) 和 ( b ) 是直线参数,用于确定点的位置。


    通过以上知识,我们可以理解椭圆曲线在比特币中的重要性,以及其在加密和签名中的具体应用。

    转载地址:http://ukzp.baihongyu.com/

    你可能感兴趣的文章
    Pympress:强大的双屏PDF阅读器
    查看>>
    pymysql.err.InternalError: (1054, "Unknown column '27D24A3B' in 'where clause'")之错误解决
    查看>>
    pymysql.err.OperationalError: (1364, “Field ‘id‘ doesn‘t have a default value“)
    查看>>
    PyMySQL库对Mysql数据库进行增删改查与工具类封装
    查看>>
    pynput的基本介绍和使用
    查看>>
    pyodbc 通过 IIS7 连接到 MSSQL 2005 服务器
    查看>>
    PyPI 存储库中的 JarkaStealer:深入解析与防范措施
    查看>>
    Pyplot tutorial,Pyplot官方教程自翻译
    查看>>
    PyQ5学习笔记——使用内部槽函数关闭窗口
    查看>>
    PyQ5学习笔记——使用自定义槽函数关闭窗口
    查看>>
    PyQt MimeData 文件名
    查看>>
    PyQt QML Material Design 按钮背景不会改变
    查看>>
    PyQt QString转成python stirng
    查看>>
    PyQt QToolButton在焦点时不更新图标
    查看>>
    PyQt 正确使用 emit() 和 pyqtSignal()
    查看>>
    PyQT-将文件复制到剪贴板
    查看>>
    PYQT.如何在QTableView中插入小部件
    查看>>
    PyQt4 代码在 PyQt5 (QHeaderView) 上不起作用
    查看>>
    PyQt4 到 PyQt5 ->mainFrame() 已弃用,需要修复才能加载网页
    查看>>
    PyQt4, class:mouseButtons用法
    查看>>