椭圆曲线签名算法的v的定义
在之前的个个与签名相关的地方我都对v的定义感到十分困惑,知道查看了黄皮书以后才对它的作用有了一定地了解,如下:
(v is the recovery id: a 1 byte value specifying the sign and finiteness of the curve point; this value is in the range of [27, 30], however the Ethereum protocol declares the upper two possibilities, representing infinite values, invalid)
v是恢复id: 1字节值,指定曲线点的符号和有限性.这个值在[27,30]的范围内,但是Ethereum协议声明了上面的两种可能性,表示无限的值,无效
查看黄皮书可见:

specify the parity and finitness of the coordinates of curve point for which r is the x-value
指定r为x值(s为y值)的曲线点坐标的奇偶性和有限度,因为当r值确定时,在椭圆曲线上是有两个点的,v是用于说明那个点才是真正符合结果的点
r为点的x坐标,s为点的y坐标,v坐标的奇偶检验标识符,27表示偶数y, 28表示奇数y
the value is in the range of [27,30],however we declare the upper two possibilities,representing infinite values,invalid
这个值在[27,30]的范围内,但是我们声明上面两种表示无限值的可能性无效(即只有当r,s代表的点是有限的时,v才是有效的)
v用做奇偶校验,27表示偶数y, 28表示奇数y。

当发生分叉后,the message hash有两种,一种是没分叉时当v 为{27,28}时,只hash前六个元素,而是(nonce, gasprice, startgas, to, value, data);另一种是分叉后hash九个元素(还要再加上CHAIN_ID,r=0,s=0)
而且,如果
,则说明to address = 0x0,那么p =
,即input;不然就为
,即data

签名后得到的
(即v)有两种值的可能,当其作为标识符时,它的结果为{27,28};但是如果它与分叉chainId有关时,它的值为 chainId*2 =35 或chainId *2 +36,它也能表示y的奇偶性,作为奇偶检验,35表示偶数y, 36表示奇数y
当复原recover时,v也会根据上面的两种可能来进行变化,如果是与chainId有关,则在输入recover函数前,要先使用
来进行转换
在不同的客户端可见返回的值也有所不同:
In Geth, v is always 00 or 01. In testrpc, v is always 1a (27) or 1b (28).
椭圆曲线签名算法的v的定义的更多相关文章
- 椭圆曲线密码体制(ECC)简介
一.椭圆曲线的基本概念 简单的说椭圆曲线并不是椭圆,之所以称为椭圆曲线是因为他们是用三次方程来表示,并且该方程与计算椭圆周长的方程相似. 对密码学比较有意义的是基于素数域GF(p)和基于二进制域(GF ...
- [区块链] 密码学——椭圆曲线密码算法(ECC)
今天在学椭圆曲线密码(Elliptic Curve Cryptography,ECC)算法,自己手里缺少介绍该算法的专业书籍,故在网上查了很多博文与书籍,但是大多数博客写的真的是...你懂的...真不 ...
- WindowsXP序列号产生原理(椭圆曲线法)
WindowsXP序列号产生原理(椭圆曲线法) 来源 https://blog.csdn.net/zhiyuan411/article/details/5156330 参考 https://www. ...
- 临时文件相关的v$tempfile v$sort_usage与V$tempseg_usage
SQL> select username,user,segtype,segfile#,segblk#,extents,segrfno# from v$sort_usage; SEGFILE#代表 ...
- 《Unix网络编程》卷2 读书笔记 第3章- System V IPC
1. 概述 三种类型的System V IPC:System V 消息队列.System V 信号量.System V 共享内存区 System V IPC在访问它们的函数和内核为它们维护的信息上共享 ...
- Linux进程通信之System V消息队列
System V消息队列是Open Group定义的XSI,不属于POSIX标准.System V IPC的历史相对很早,在上个世70年代后期有贝尔实验室的分支机构开发,80年代加入System V的 ...
- Linux进程通信之System V共享内存
前面已经介绍过了POSIX共享内存区,System V共享内存区在概念上类似POSIX共享内存区,POSIX共享内存区的使用是调用shm_open创建共享内存区后调用mmap进行内存区的映射,而Sys ...
- ECDSA数字签名算法
一.ECDSA概述 椭圆曲线数字签名算法(ECDSA)是使用椭圆曲线密码(ECC)对数字签名算法(DSA)的模拟.ECDSA于1999年成为ANSI标准,并于2000年成为IEEE和NIST标准.它在 ...
- v语言怎么玩
直接上github: https://github.com/vlang/v 前戏 大概是在6月份的时候,在github上看到了这个玩意,我以为是??? 我下意识的去查了一下有没有人在讨论这个语言,但是 ...
随机推荐
- 命令查看当前电脑安装所有版本.NET Core SKD
dotnet --version 查看当前使用版本 dotnet --info 安装的所有版本 包括版本地址 也可用命令帮助 dotnet help
- [Linux] Linux Shell查找文件
#!/bin/bash # 查找当前目录中所有大于1mb的文件,把文件名写到文本文件中,统计个数 # # find命令,参数:路径地址,命令参数,-size n (查找长度为n的文件) -type f ...
- Ajax实现的城市二级联动二
上一篇联动一种只是城市用ajax请求获取并渲染,这里将省份也用ajax请求并渲染 1.HTML <select id="province"> <option> ...
- 拜小白教你OpenCV3.2.0+VS2017开发环境配置
第一部分:OpenCV3.2.0的下载 OpenCV官方下载地址: http://opencv.org/releases.html# 本人选择opencv3.2.0基于Windows平台.读者根据自己 ...
- HDU6205
card card card Time Limit: 8000/4000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)To ...
- 在EXT框架中,使用JS文件设置UEditor文本框,出现新增内容很多,页面变型,不出现滚动条,导致无法进行操作。
找到UEditor的配置文件:ueditor.config.js(这是我的项目的UEditor的配置文件名) 找到参数设置 autoHeightEnabled 是否自动增长参数,默认为TRUE 当默认 ...
- HTML常用标签及属性
标签格式 格式: 双边:<标签名 属性1="值1" 属性2='值2' 属性3=值3>内容</标签名> 单边:<标签名 属性1="值1&quo ...
- Oozie简单配置与使用
1.Oozie英文翻译 驯象人 2.Oozie简介 一个基于工作流引擎的开源框架,由Cloudera公司贡献给Apache,提供对Hadoop Mapreduce.Pig Jobs的任务调度与协调. ...
- ionic cordova 安装指定版本
安装ionic 及 cordova npm install -g cordova ionic npm 淘宝镜像(GFW,导致很多插件下载失败) npm install -g cnpm --regist ...
- 纯小白入手 vue3.0 CLI - 2.7 - 组件之间的数据流
vue3.0 CLI 真小白一步一步入手全教程系列:https://www.cnblogs.com/ndos/category/1295752.html 尽量把纷繁的知识,肢解重组成为可以堆砌的知识. ...