椭圆曲线签名算法的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上看到了这个玩意,我以为是??? 我下意识的去查了一下有没有人在讨论这个语言,但是 ...
随机推荐
- SignalR 自寄宿
源代码 https://github.com/xlb378917466/Chat.Server 1.使用控制台程序来寄宿SignalR的服务端,这需要借助于Owin中间件, 2.实现一个服务端的Cha ...
- sql特殊语法
MYSQL --判断非空select ifnull(null,'666');--666select ifnull(null,null);--null--合并字段select CONCAT('666', ...
- 海西 · 云交付 DevOps实践落地方案
一.背景概述 (一)产品背景 1.互联网+的需要 在信息越来越繁杂的互联网时代,公司所运行的项目越来越多,项目相关服务繁多,服务之间存在复杂的依赖关系,运维与管理任务越来越繁重,手工交付需要花 ...
- vue-cli脚手架之webpack.dev.conf.js
webpack.dev.conf.js 开发环境模式配置文件: 'use strict'//js按照严格模式执行 const utils = require('./utils')//导入utils. ...
- 使用bootstrap的JS插件实现模态框效果
在上一篇文章中,我们使用 js+css 实现了模态框效果,在理解了模态框的基本实现方法和实现效果后,我们就要寻找更快捷的方法,又快又好的来完成模态框开发需求,从而节约时间,提高效率.一个好的轮子,不仅 ...
- Spring@Autowired注解与自动装配(转发)
1 配置文件的方法 我们编写spring 框架的代码时候.一直遵循是这样一个规则:所有在spring中注入的bean 都建议定义成私有的域变量.并且要配套写上 get 和 set方法. Boss ...
- AppBoxPro(权限管理框架--FineUIPro基础版+工厂模式+ADO.NET+存储过程)
FineUIPro基础版火爆来袭,特献上ADO.NET纯SQL方式AppBoxPro,希望大家能够喜欢! 下载源码请到[知识星球] https://t.zsxq.com/3rrNFyv
- Windows 10修复
[以管理员运行如下命令]: 1.sfc /scannow 命令将扫描所有受保护的系统文件,并用位于 %WinDir%\System32\dllcache 的压缩文件夹中的缓存副本替换损坏的文件. 2. ...
- Salesforce服务云简介
服务云简介 Salesforce的服务云(Service Cloud)是专注于客服和呼叫中心解决方案的子系统.它是Salesforce核心CRM系统的一部分. 服务云特性 服务云提供了客户服务和呼叫中 ...
- 新浪微博POI点签到数据及可视化的初步成果
目前仅对山东省区域进行了抓取,权限不够高,抓取的速度非常慢,所以导致效率比较低... 数据抓取采用调用微博开放平台API的方法,数据存储采用mysql,格点数据分辨率为30″,山东省的MBR范围内(包 ...