每天进步一点点:从签名恢复公钥

之前学习了私钥、公钥、签名、验证等相关知识,一个有意思的地方是,公钥是可以从签名当中恢复的,是不是很神奇?今天我们就来看一下如何从签名当中恢复公钥。


(图源 :pixabay)

理论 & 算法

从签名恢复出公钥的说明&算法可以参考《SEC 1: Elliptic Curve Cryptography》一文中的4.1.6 Public Key Recovery Operation小节:

Given an ECDSA signature (r, s) and EC domain parameters, it is generally possible to determine the public key Q, at least to within a small number of choices.

大意就是给签名和EC域参数,通常可以确定出公钥,至少在少数几个选择之内。

算法如下:

image.png

是不是很复杂?我觉得也是。

代码实现 (steem-python)

好在steem-python中帮我们实现了一段代码,我们就不必自己去写了。

image.png

代码测试 (steem-python)

用上述代码,对之前我们签名中的公钥进行恢复,测试代码如下:

1
2
3
4
for i in range(0, 4):
print(i)
vk=recover_public_key(digest,sigstr,i)
print(hexlify(vk.to_string()).decode())

我们会发现,当i=2时(第三次)程序异常退出,发现i=0时发现的公钥是我们使用的公钥:

image.png

不知道是不是每次都是只有两个解

至于第几个解才是我们想要的公钥,steem-python中采取的是比较方法,把正确的公钥索引写进签名的参数中(recoverPubkeyParameter),这样我们就可以知道解出来的一系列(可能是2个)公钥中,哪个是我们签名时锁使用的了。

代码实现 ecdsa

从签名中恢复公钥,新版的ecdsa中直接就有对应函数:

image.png

反正都是读不懂,不过最后只是把R中的y换成了-y,只得出两个点Q(两组公钥),测试代码如下:

1
2
3
Sig = ecdsa.ecdsa.Signature(r, s)
digest_number = ecdsa.util.string_to_number(digest)
pubks = Sig.recover_public_keys(digest_number,ecdsa.SECP256k1.generator)

这里得到的两个公钥其实是椭圆曲线上的两个点,转换成可阅读的公钥形式可以参考我以前的公钥生成代码(ecdsa.util.number_to_string),或者直接调用ecdsa的ecdsa.VerifyingKey.from_public_point即可,这里就不再赘述了。

用上述函数得出的两组公钥和用steem-python部分代码得出的两组公钥是完全相同的,所以再次得出疑问,是不是从签名中只能算出两组公钥?

哎,椭圆曲线就在眼前,想搞明白怎么回事太难了:

image.png

不过搞不懂原理就不搞了,知道咋用就好了。

相关链接


This page is synchronized from the post: ‘每天进步一点点:从签名恢复公钥’

感冒 & 以毒攻毒

晚餐过后不久,突然打了几个喷嚏,然后觉得浑身发冷,我觉得大事不好,要感冒了。


(图源 :pixabay)

赶紧把毛绒绒的家居服套上,外边又套上羽绒马甲,把空调打开,把电暖器也打开,然后蒙上大被躺了一会,然而并不见好转。

其实感冒什么的不算什么大事,不过这个时期感冒就不太好了,如果出去被测出体温异常就尴尬了。

我可是连续好多天没接触什么外人,多说在小区内溜达溜达,并且坚持佩戴口罩,回来用香皂洗手洗脸,所以应该只是普通的感冒啦。

关于感冒,我听过两个民间的所谓良方:一是泡热水澡,水温高一点,多泡一会;另外一个就是吃一些雪糕之类的冰冷的食物,以毒攻毒。

泡热水澡这招,我觉得我现在比较虚弱,水温过热别说多泡一会,估计泡十分钟就会虚脱昏迷了,所以思前想后觉得还是吃些雪糕之类的比较好。

还好家里前段时间点KFC外卖,一下子多叫了好多圣代冰激凌,因为我们觉得这个KFC的圣代还是不错的,而且比那些高端的雪糕和冰激凌都要便宜,所以每次叫外卖的时候就顺便囤一些。


(图源 :pixabay)

弄了一个焦糖珍珠的圣诞,吃了下去,果然舒服多啦,现在已经觉得不冷了(冻麻木了),至于以毒攻毒最终效果如何,要看明天的啦,但愿别毒气攻心就好。


This page is synchronized from the post: ‘感冒 & 以毒攻毒’

回猪圈看看

今天有事登录一下猪圈,上次登录猪圈是什么时候,我都有些记不得了,至少要两年以前了。


(图源 :pixabay)

猪圈里十分冷清,就我一头猪。而最近几年猪圈最热闹的日子莫过于近4年前STEEM刚刚上线的日子,猪圈的一些大佬纷纷加入STEEM并投资。

image.png

可惜猪圈的大佬们都被割了,折戟沉沙,最后黯然离场,最后猪圈在玩STEEM/HIVE的,应该就剩我自己了吧?

好在大佬们是金子总会发光的,玩其它的币子都获利颇丰,相比之下,STEEM里损失的不过是零头的零头。

猪圈在STEEM上的第一个帖子应该是 @laonie 发的:

image.png

不知道大家是否记得 @laonie?彼此猪圈戏称 @laonie @xiaohui 为猪圈的正副帮主,圈里气氛十分和谐友爱。

@xiaohui 还创建 STEEMIT中国社区 QQ群、微信群、电报群,不过现在这几个群都有了新主人。

还有个猪圈的名人就是 @somebody,当初雇人把STEEM白皮书翻译成中文版,相关帖子也一度冲击STEEM热门榜首。somebody现在搞起了矿场,规模颇大,风生水起。

image.png

算起来,我在猪圈里混了快16年了,大概是猪圈里混的最差的一批吧,当大家都在成功的道路上飞奔时,我在慢悠悠的散步,然后,现在只能仰望了。


(图源 :pixabay)

回猪圈看看,感概颇多的,现在大家都转移阵地了,很少有人回论坛了,不过还是感觉论坛最亲切,并且记录啥的会一直保持下去,真好。


This page is synchronized from the post: ‘回猪圈看看’

STEEM 0.22.8888

大家都知道,昨天(Sat, 4 April 2020 10:00:00 UTC)STEEM上进行了0.22.8888软分叉。不得不说,这个日子选择的非常好,4月4日,清明节

image.png
(图源 :pixabay)

这次软分叉限制了下列账户的所有和资金有关的操作:

@freedom
@pumpkin
@blocktrades
@gtg
@good-karma
@roelandp
@steempress
@darthknight
@cleta
@ashleigh
@anastacia

受影响的相关操作为:

account_witness_proxy_operation
account_witness_vote_operation
update_proposal_votes_operation
vote_operation
withdraw_vesting_operation
set_withdraw_vesting_route_operation
transfer_operation
limit_order_create_operation
limit_order_create2_operation
transfer_to_vesting_operation
transfer_to_savings_operation
escrow_transfer_operation

有意思的是,@steemitblog 在这之后,发了一个声明,说steemit和波场基金并没有参与:

We would like to notice that Steemit, Inc., along with the Tron Foundation did not anticipate this to happen and we would like to stay neutral regarding this situation.

但是如果看看 @dev365 的投票记录,就会发现很有意思的事情:

image.png

@dev365的投票记录可以在这里查看:
https://steem.eztk.net/witnesses.php?id=dev365

不知道,STEEMIT会不会把这次软分叉定义为黑客恶意攻击,再来一次所谓的拨乱反正?毕竟孙宇晨曾经信誓旦旦地表态:

image.png

另外,颇为搞笑的是0.22.8888是我一个月以前在运行的版本号,区块链上有贴为证:

image.png

相关链接


This page is synchronized from the post: ‘STEEM 0.22.8888’

又到了拍花的季节了

image.png

终于盼来了万物复苏的春天,草也绿了,花也开了,蝴蝶在花朵间翩翩起舞,又到了拍花的季节了,随手一拍,全是美景。

奈何手机不是专业的摄影设备,我的构图与审美水平也很渣,好好的美景,拍出来的与现实中的差异不小,不过凑合看看也说的过去。

image.png

image.png

image.png

image.png

image.png

image.png

image.png

image.png

image.png

想起一首诗:

《城东早春》
诗家清景在新春,绿柳才黄半未匀。
若待上林花似锦,出门俱是看花人。

现在倒是花似锦了,可是估计原本计划看花的人都宅在家中躲避疫情呢吧?


This page is synchronized from the post: ‘又到了拍花的季节了’

驾驶证换证成功

昨天发帖子说自己之前在交管12123APP上申请了驾驶证期满换证,虽然没有提交体检报告,驾驶证还是给批准下来了,这就是所谓的容缺办理。


(图源 :pixabay)

尽管APP上给了我物流单号,但是一看是邮政物流的,我就懒得去查了,邮政物流一向都是很慢的,另外老证还还有半个多月到期,其实我并不是很急。

早晨正睡得香甜,被一直响个不停的电话铃声吵醒,接起电话对方说是邮政快递的,说我的驾驶证下来了,问我今天在家不?

回复他今天在家以后,他告诉我大概要两三个小时以后到,我晕,两三个小时以后到,你打这么早电话干啥?扰人好梦,这样厚道吗?😡

不过吵醒之后就再也睡不着了,只好爬了起来,开始忙碌。忙碌了大半天之后听到门铃响,出门一看果然是邮政快递,原来不是普通的快递方式,是EMS。

快递费是到付的,20元钱,话说现在同城快递20元,真的是相当的贵了,不过既然自己懒得去车管所取,那么20元就20元吧。

交完钱,送走快递员,拆开EMS信封后拿出驾驶证,感觉新证上的照片比老证上的看起来舒服多啦,自己拍的,就是比他们拍的强。

驾驶证到期日期到2030年,又可以愉快地玩耍十年了,不过话说有效期从2020年4月1日起,怎么感觉怪怪的呢。


(图源 :pixabay)

收到驾驶证不久之后,又收到交警队的短信:

【辽宁交警】您存在容缺办理期满换证业务未提交身体条件证明的情形,请及时补交身体条件证明。如不及时补交,以后办理驾驶证业务将受限。

我没说不去体检啊,不要这么一直催嘛,事情不得一步一步的来嘛。😳

相关链接


This page is synchronized from the post: ‘驾驶证换证成功’

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×