• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

ios - ECDSA secp256k1 key 对在 Swift 上签名

[复制链接]
菜鸟教程小白 发表于 2022-12-11 20:28:16 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

在这里,我通过一些虚拟 prvData 创建了私钥,然后创建了 2 个虚拟数据对象并尝试对 data1 和 data2 对象进行签名

NSData *prvData = [NSData hexStringToData"e8f32e723decf4051aefac8e2c93c9c5b214313817cdb01a1494b917c8436b35"];

NSData *data1 = [NSData hexStringToData"0339a36013301597daef41fbe593a02cc513d0b55527ec2df1050e2e8ff49c85c2"];
NSData *data2 = [NSData hexStringToData"0339a36013301597daef41fbe593a02cc513d0b55527ec2df1050e2e8ff49c85c20339a36013301597daef41fbe593a02cc513d0b55527ec2df1050e2e8ff49c85c2"];


NSData *sig1 = [CKSecp256k1 compactSignData:data1 withPrivateKey:prvData];
NSData *sig2 = [CKSecp256k1 compactSignData:data2 withPrivateKey:prvData];

在这里,sig1 和 sign2 对象值都相同,但它不应该发生。所以请如果有人做过这个签名问题,请告诉我,怎么办?



Best Answer-推荐答案


这些函数直接调用非托管 (C) 代码。输入值被认为与 key 大小相同:256 位或 32 字节。如果您提供的数量超过此数量,则只占用前 32 个字节。原因很简单:数据只是使用单个指针发送而没有指定长度

所以基本上这段代码只有在你向它发送一个 32 字节的哈希值时才会起作用。我认为您只能使这项工作适用于 256 位散列或小于该值的散列。对于较大的散列,您可能必须在曲线的顺序上执行模减少。较小的散列可以left-padded零的最多32个字节以使它们工作(ECDSA是大端)。

您可能已经注意到对 CKSecp256k1 的调用中缺少哈希机制。如果你看一下代码,它肯定不会在内部执行它,即使输入被称为“消息”。这是一个专门用于比特币的低级 API,看起来。

关于ios - ECDSA secp256k1 key 对在 Swift 上签名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51873672/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap