前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Golang语言情怀--第81期 区块链技术-基于长安链建立NFT流程-通信数据数字签名使用

Golang语言情怀--第81期 区块链技术-基于长安链建立NFT流程-通信数据数字签名使用

作者头像
李海彬
发布2022-06-10 16:44:07
5560
发布2022-06-10 16:44:07
举报
文章被收录于专栏:Golang语言社区Golang语言社区

本期就给大家讲下,目前项目中数据签名算法的使用。我们使用的是SM2,不熟悉的可以去了解SM2的背景。

调用流程:


签名算法:SM2

功能描述:用于对各种接口行为的信息内容进行签名,并加入 timestamp 字段, 达到验证行为发起方身份、保证信息传输完整性和安全性的目的。 

签名流程:

A)将请求发起方发送的所有数据根据参数名首字母 ASCII 码从小到大的顺序 排序(传入的 sign 签名参数除外),通过“&”符号拼接成一个“参数=参数 值”格式的字符串。例如:”creators=testid&time=2022-05-16” 

B)将上一步得到的字符串经过一次 sha256 计算得到哈希值 SignHash 

C)将上一步得到 SignHash 用机构或用户的私钥进行签名得到签名值 Sign。 

举例: 

假设此次行为传入的参数:creates:gx123 address: 123456 name: gx time: 2022-02-16 12:33:50 

A)按序拼接上述参数得到字符串:“address=123456&creates=gx123&nam e=gx&time=2022-05-16” 

B) 对上一步得到的字符串进行 sha256 计算得到 hash 值:4828dc0cdd1dc7f e3499325d1a72d4421d558c6966957f04b9262f09f2b917c5

C) 将上一步得到的 hash 值传入签名函数,通过用户或机构的私钥进行签名, 对得到的签名数据进行格式转换,最终得到 pem 格式的字符串

:MEYCIQDMyaEJa8mxqAwEJb1j4WE4iFHy8fSL3nuhiuWCJQJhUwIhAMCOLu1Uzyps 1O2YwZIIX90WeA7evBSVOOlkGpWjTDt0。


举一个创建NFT实际开发例子:

路由:/CreateNFT

功能描述:创建NFT,返回NFT信息

调用方法:POST

返回:NFT对象

参数:

参数名称

类型

说明

必带参数

id

string

NFT的id

create_addr

string

创建者的地址

create_name

string

创建者的名称

nft_name

string

NFT名称

nft_desc

string

NFT描述

nft_addr

string

NFT地址

nft_metadata

string

NFT元数据地址

nft_total

string

发行的NFT总量

sign

string

签名,用于验签

timestamp

string

时间戳

nft_hash

string

NFT哈希值

逻辑: 

A) 对传入的参数进行校验,判断所有参数是否非空。参数名 类型 说明 address string 钱包地址 

B) 若都不非空,则验证签名信息。先将传入的时间参数与当前时间进行比较, 若差值在允许范围内则进行下一步验证。 

C) 根据传入的信息构造成签名参数,对此信息进行签名(签名逻辑已在上文 阐述,此处不再赘述),通过 SM2 验证算法对传入的签名进行验证。 

D) 若签名验证通过,则根据 NFT 链上地址进行链上查询,若链上不存在,则 生成 NFT 的地址,并将此地址与 NFT 其他信息进行封装,再上链。


本期就到这里,下期继续未完讲解。

同学们,兴趣是最好的老师;只争朝夕,不负韶华!加油!


参考资料:

Go语言中文文档

http://www.golang.ltd/

Go语言官方文档

https://golang.google.cn/

海伦链论坛(筹建中)

https://www.HeronChain.Com/

Golang语言情怀

ID:wwwGolangLtd

 www.Golang.Ltd

        游戏服务器架构丨分布式技术丨大数据丨Go语言学习

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2022-06-10,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Golang语言情怀 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档