博客
关于我
区块链 - 比特币加密算法之椭圆曲线
阅读量: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/

    你可能感兴趣的文章
    OpenLayers 项目分析(三)-OpenLayers中定制JavaScript内置类
    查看>>
    Openlayers下载与加载geoserver的wms服务显示地图
    查看>>
    Openlayers中使用Cluster+Overlay实现点击单个要素和聚合要素时显示不同弹窗
    查看>>
    Openlayers中使用Cluster实现点位元素重合时动态聚合与取消聚合
    查看>>
    Openlayers中使用Cluster实现缩放地图时图层聚合与取消聚合
    查看>>
    Openlayers中使用Image的rotation实现车辆定位导航带转角(判断车辆图片旋转角度)
    查看>>
    Openlayers中使用Overlay实现点击要素弹窗并且弹窗随之移动
    查看>>
    Vmware系列&虚拟机系列【仅供参考】:使用vCenter Auto Deploy制作ESXI系统封装(适合高版本vSphere)
    查看>>
    Openlayers中加载GeoJson文件显示地图
    查看>>
    Openlayers中加载Geoserver切割的EPSG:900913离线瓦片图层组
    查看>>
    Openlayers中加载Geoserver切割的EPSG:900913离线瓦片地图并显示
    查看>>
    Openlayers中多图层遮挡时调整图层上下顺序
    查看>>
    Openlayers中实现地图上添加一条红色直线
    查看>>
    Openlayers中将某个feature置于最上层
    查看>>
    Openlayers中点击地图获取坐标并输出
    查看>>
    Openlayers中设置定时绘制和清理直线图层
    查看>>
    Openlayers入门教程 --- 万字长篇
    查看>>
    Openlayers图文版实战,vue项目从0到1做基础配置
    查看>>
    OpenLayers学习三:地图旋转及地图跳转到某一点的方式(以类为接口)
    查看>>
    Openlayers实战:loadstart和loadend事件
    查看>>