问题标签 [secp256k1]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
80 浏览

go - 使用 Azure Key Vault 生成的 Secp256k1 公钥为 43 个字符

我正在将 Azure 密钥保管库用于宠物项目,并且正在创建 Secp256k1 密钥对。在 Azure 中创建密钥的步骤:

  1. 打开 Key Vault 资源
  2. 从左侧面板中选择键。
  3. 单击左上角的生成/导入。
  4. 选择密钥类型:EC,EC名称:P-256K(基本上是Secp256k1)
  5. 单击创建。

一旦我尝试使用以下代码从我的 Go-lang 应用程序访问密钥的公共部分:

您可以在 Mircosoft Docs 中查看此处列出的密钥的不同属性。 https://docs.microsoft.com/en-us/rest/api/keyvault/create-key/create-key#request-body

上面的代码给我一个输出:
X = uAv6rXZedQbihGUQwFkEZl35LeI7OHdhHSOEf3VpXyw
Y = Q8MzSQGOtqT41lsYU-P82o6Fryn8Vnub0l0kdOOdOHI

给定的键长度为 43 个字符,而我通过阅读有关 Secp256k1 的信息了解到这些只是 32 个字符。密钥大小为 43 在我打算使用它的应用程序中给我一个错误。

我在这里遗漏了什么还是 Azure 提供了一些额外的字符或类似的东西?任何帮助表示赞赏。

0 投票
0 回答
27 浏览

cryptography - 使用 EC 和 P-256K 创建的 Azure Keyvault 密钥,签名不适用于 64 字节字符串

我使用 EC 和 P-256K 参数在 azure key vault 中创建了一个密钥。我在我的应用程序中使用 Azure go-lang sdk。当我调用如下符号函数时:

这里 test(base64 url​​ encoded) 是我想要签名的字符串。如果字符串为 32 字节,则签名工作正常,因为我需要签署 64 字节字符串。(为我的学校项目模仿比特币之类的东西。)这是我得到的错误顺便说一句:

我在这里遗漏了什么吗,有没有办法可以得到一个 64 字节的字符串签名。

0 投票
1 回答
66 浏览

encoding - Azure KeyVault 签名在验证期间间歇性地使用 javascript 库失败

我正在使用 Azure 密钥保管库来创建和存储我的 Secp256k1 密钥。我还使用 sign API 来对我的输入字符串进行签名。我正在开发一个 Secp256K1 区块链网络。这些是我在 Golang 中获取签名所遵循的步骤。

  1. 将我的十六进制字符串转换为字节 []
  2. 这个 Byte[] 的 Sha256
  3. 此 Sha 的 RawURL 编码。
  1. 将此发送到 Key Vault 以供签名。
  2. 使用 RawURLEncoding 解码响应。
  1. 对第 5 步返回的 []Byte 数组进行十六进制处理。
  2. 将签名发送到区块链。

我面临的问题是签名有时无效。就像 2/5 次它有效,而其他时候签名验证失败。我在想我缺少一些特殊的字符或填充物。我该如何解决这个问题?

PS:Azure 使用非确定性签名,而链通常使用确定性签名。我做了一些阅读,发现对于验证来说,两者都可以成功验证并不重要。让我知道我是否错了。

0 投票
0 回答
132 浏览

.net - 如何使用十六进制格式的私钥生成 secp256k1 签名

我正在尝试使用 Hive 网络中的 PostingKey 对短消息进行签名。我正在尝试使用 BouncyCastle,但我无法初始化它的签名者,我的(不太好的代码)看起来像这样:

我很可能做错了什么(或一切)。

密钥如下所示: 5KN6ZfGZgH1puWwH1Nc1P8xyrFZSPHDw3WUP6iitsjCECJLrGBq 然后将其编码为 32 字节数组。

我有在 JavaScript 中工作的示例代码,但我未能让它在 C# 中运行

已编辑:所以我设法生成了与 JavaScript 中生成的大小相匹配的签名,但我仍然无法在 dApp 中唱歌。我现在正在使用 Cryptography.ECDSA 库,因为它可以在一次调用中生成带有恢复号、r 和 s 的签名。唯一的问题是每次我调用相同的值时签名都是不同的。

0 投票
1 回答
119 浏览

ruby - 如何在 Ruby 中离线签署 Tron 交易?

我正在尝试在 Ruby 中离线签署 Tron 交易。

TronGrid 有一个端点来签署交易,但他们需要向他们发送帐户私钥才能这样做,这感觉有潜在风险,所以我想在本地签署交易以避免私钥值离开服务器。

具体来说,我正在尝试在 Ruby 中转换此 Javascript 方法:https ://github.com/tronprotocol/tronweb/blob/master/src/utils/crypto.js#L218

我一直在尝试同时使用 OpenSSL 和gem来做到这一点,但没有取得多大成功。

这是我到目前为止所得到的:

后者给了我rands然后在 javascript 函数中使用(即使它们与我在 JS 中得到的不匹配),我不确定我在哪里可以得到那个recoveryParam.

前者并没有返回我所期望的签名。

我有点迷失如何找到签署这些交易的方法。

0 投票
0 回答
134 浏览

javascript - Browserify tiny-secp256k1

我正在尝试在 Javascript 项目中使用tiny-secp256k1 。我希望代码与 Node.js 和浏览器兼容,索引文件中的 require 模块是:

Browserify对create-hmac没有问题,但对于tiny-secp256k1,我收到以下错误:

在 github 存储库中,有一些在 react 应用程序中使用的库示例。但我不知道它是如何工作的。

是否可以在浏览器中使用这个库?

0 投票
1 回答
124 浏览

c - 使用 secp256k1 库编译失败

所以我一直在关注本教程:https ://nickfarrow.com/Cryptography-in-Bitcoin-with-C/我libsecp256k1https://www.howtoinstall.me/ubuntu/18-04/libsecp256k1-dev/安装但同时编译我的程序:

我得到:

提前致谢!

0 投票
0 回答
77 浏览

java - 使用 secp256k1 在 JAVA 中对数据进行签名并在 C++ 中进行验证

我想用 Java 对数据进行签名,然后用 C++ 对其进行验证。当我在 c++ 中使用 bitcoin-core/secp256k1 库对数据进行签名,然后在 c++ 中对其进行验证时,它可以完美运行。但是,当我用 Java 对其进行签名然后将其传输到 c++ 时,它就不再起作用了。

Java代码:

我会非常感谢一个答案!

0 投票
0 回答
16 浏览

openssl - 是否可以使用 OpenSSL 获得恢复 ID?

当为 secp256k1 签名消息时,OpenSSL 返回一个 (r,s) 对作为签名。

是否可以获得 (r,s,v), v 作为公钥的恢复 ID?

据我了解,在签名时,会计算一个点 R(X,Y),X 成为 r,v 是 Y 的最后一位(可能反转)。

0 投票
0 回答
17 浏览

ios - secp256k1 私钥保存到 pem 文件

嗨,我正在使用 Swift 将 secp256k1 的私钥保存到 pem 文件中。当我生成私钥时,我得到了一个 32 字节的密钥,不知何故在 base64 中它是“7vInO7T/GBg6bxkr+6W4ESV4UOy6W4E2N4i9fBgMqYM=”,这是一个很短的字符串。我看到了由其他语言(例如 PHP 或 Scala)生成的其他私钥的一些示例,我可以看到 PEM 文件中的私钥在某种程度上是这样的: -----BEGIN EC PRIVATE KEY----- MHQCAQEEIEEtespOtpvBZFfn+2YX/9WlsRLTb8YSWkfV1IBP +Lz9oAcGBSubBBAAK oUQDQgAEun8ex7Yei3nN1mnw2/c9QNwIEzAZ8+upXkN5hgHNgrpn2ufxP8G/byc9 Lx8wKQIXhmCIXMySxUeQUCDzl65trA== -----END ECIVATE KEY----- 这是一个非常长的 base64 字符串。我怎样才能生成这么长的字符串以及它的规则是什么?我的意思是我应该怎么做才能使我可以生成的非常短的base64字符串像其他语言一样长字符串?