椭圆曲线签名算法的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上看到了这个玩意,我以为是??? 我下意识的去查了一下有没有人在讨论这个语言,但是 ...
随机推荐
- 解决SharePoint 2010拒绝访问爬网内容源错误
今天发现SP爬网出现了问题,持续时间蛮长的,一直爬不到内容. 解决方案: 这里有一条解决在SharePoint 2010搜索爬网时遇到的"拒绝访问错误"的小技巧. 首先要检查默认内 ...
- Tomcat报failed to parse the expression [${xxx}]异常(javax.el.ELException)的解决方法
Tomcat 7 'javax.el.ELException' 的解决方式tomcat 7对EL表达式的语法要求比较严格,例如"${owner.new}"因包含关键字new就会导致 ...
- 【RabbitMQ】5、RabbitMQ任务分发机制
当有Consumer需要大量的运算时,RabbitMQ Server需要一定的分发机制来balance每个Consumer的load.接下来我们分布讲解. 应用场景就是RabbitMQ Server会 ...
- java_完数
题目内容: 一个正整数的因子是所有可以整除它的正整数.而一个数如果恰好等于除它本身外的因子之和,这个数就称为完数.例如6=1+2+3(6的因子是1,2,3). 现在,你要写一个程序,读入两个正整数n和 ...
- 移动端安卓手机不能识别border 0.5px解决方案
由于安卓手机无法识别border 0.5px,因此我们要用0.5px的话必须要借助css3中的-webkit-transform:scale缩放来实现, 原理:将伪元素的宽设为200%,height设 ...
- loadrunner 场景设计-添加Unix、Linux Resources计数器
场景设计-添加Unix.Linux Resources计数器 by:授客 QQ:1033553122 A. 目的 监控要测试的Unix.Linux服务器的资源使用情况 Linux CentOS为例 ...
- LearnX控件漏洞挖掘与利用
前言 大学英语会用到一个 ActiveX 插件 LearnX ,最近从网上下了一个下来分析了一下,找到了一些漏洞并完成了 exploit . 虽然涉及的知识比较老旧,不过还是挺有意思的.这里分享一下整 ...
- MVC与单元测试实践之健身网站(七)-添加计划
计划的制定涉及到周期-动作包-动作的关联操作,在上一篇<计划的添加与重置>完成了周期的设置.动作包的添加,现在要完成的是动作的添加操作. 一 具体功能 a) 在选定了一个大周期具有的天数 ...
- (后端)如何将数据库的表导出生成Excel?
1.如何通过元数据拿到数据库的信息? 2.如何用Java生成Excel表? 3.将数据库中的表导出生成Excel案例 如何通过元数据拿到数据库的信息 元数据:描述数据的数据 Java中使用元数据的两个 ...
- [20171130]关于rman备份疑问.txt
[20171130]关于rman备份疑问.txt --//前面测试太乱,重新做一些rman as copy相关测试. 1.环境:SCOTT@book> @ &r/ver1PORT_STR ...