问题标签 [ed25519]

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 投票
2 回答
1166 浏览

algorithm - How do I sign a curve25519 key in golang?

I am trying to implement the X3DH algorithm from Signal in Go. However, I got stuck on how to sign the Public Signed PreKey.

Per the specifications it is supposed to be an X25519 key. In looking at previous implementations on Github they generated a [32]byte key from the curve25519 package and then converted it to an ed25519 key and then signed it.

However, the packages they used for the conversion are deprecated (github.com/agl/ed25519). Therefore, I either need to be able to convert the keys to ed25519 so I can sign them with the current ed25519 package (golang.org/x/crypto/25519) or implement a sign and verify function for curve25519 keys.

0 投票
2 回答
339 浏览

openssl - openssl 生成的 ed25519 密钥的精确字节格式

有谁知道,或者可能会指出,提示我到有记录的资源?

我想要的是这样的信息:

关键部分实际上是字节和分隔符是什么,所以我可以手动解析它。

实际上,我很乐意仅获得有关所有格式的信息。因为现在首先关心的是 openssl 密钥格式。其次,openssh 密钥格式似乎完全不同。

0 投票
1 回答
65 浏览

rust - 25519-dalek 的主要补充?

我有关键添加,对于曲线 secp256k1,工作:https ://crypto.stackexchange.com/a/83733/17505

哪个输出:

ed25519-dalek 有类似的东西吗? https://docs.rs/ed25519-dalek/1.0.0/ed25519_dalek/

0 投票
0 回答
116 浏览

csr - 使用带有 ED25519 的 BouncyCastle(或 SpongyCastle)在 Android(java 或 kotlin)中生成 CSR

有没有办法使用“ed25519 keypair”在android中生成pem格式的CSR?我们可以使用 BouncyCastle (SpongyCastle) 生成和签名 csr ,但使用“RSA”算法和密钥对。我想使用“ed25519”算法和密钥对。

0 投票
1 回答
367 浏览

kotlin - Java/Kotlin 输出 Ed25519 密钥对作为 JCE KeyPair 实例和 OpenSSH 格式

我正在使用BouncyCastle库在我的 Kotlin 应用程序中生成 Ed25519 密钥对,并且有两个要求很容易单独实现,但似乎很难同时完成:

  • 提供密钥对作为JCEKeyPair实例以与第三方 SSH 库一起使用
  • 提供 OpenSSH .pub 格式的公钥供用户复制并粘贴到 git 存储库提供程序,例如 GitHub(即ssh-ed25519 <encoded key> <comment>

我有两个使用 BouncyCastle 生成密钥的选项,每个选项都使这些要求中的一个变得容易。

使用 BouncyCastle 生成器直接生成

这给了我一个包含 的密钥,这使得使用BouncyCastle 提供Ed25519PublicKeyParameters的 OpenSSH .pub 格式变得非常容易:OpenSSHPublicKeyUtil

...但是没有明显的方法可以KeyPair从这里到达 JCE。BouncyCastle JCE 实现似乎使用BCEdDSAPublicKeyBCEdDSAPrivateKey作为包装类正是为了这个目的,但它们的构造函数是包私有的。

使用 BouncyCastle 作为 JCE 安全提供程序生成

这给了我我正在寻找的 JCE KeyPair,但没有明显的方法将其转换为 OpenSSH .pub 格式。这个 RSA-specific question中的答案都只支持 DSA/RSA,或者建议的库似乎也无法处理 Ed25519 密钥。我试过了:

  • 阿帕奇 SSHD
  • SSHJ
  • Jsch

我认为我需要什么

任何一项:

  • 一种从 BouncyCastle 转换AsymmetricCipherKeyPair为 JCE的方法KeyPair
  • 一种Ed25519PublicKeyParameters从包装器中获取实例的方法,BCEdDSAPublicKey以便我可以使用 BouncyCastle 的 OpenSSH 实用程序方法
  • KeyPair从OpenSSH 格式输出 BouncyCastle 生成的 Ed25519 公钥的另一种方法
  • 生成支持我的两个要求的 Ed25519 密钥对的另一种方式/库
0 投票
1 回答
1668 浏览

java - 如何使用 Java 从私钥派生 ed25519 (eddsa) 公钥

我正在研究https://github.com/str4d/ed25519-java库以及 BouncyCastle 等其他一些库,但到目前为止我无法从私钥生成公钥。我对生成密钥对不感兴趣,因为我已经有一个私钥并且只对生成相应的公钥感兴趣。

0 投票
2 回答
3483 浏览

private-key - 将 OpenSSH ED25519 私钥格式转换为 PEM 格式

我使用生成了一个 ED25519 SSH 密钥对

文件的输出id_ed25519是 OpenSSH 格式:

我想将其转换为 PEM 文件格式。如果它是 RSA 密钥对,则不需要这样做,因为 RSAid_rsa密钥已经采用 PEM 文件格式,但 ED25519 密钥对是 OpenSSH 格式。

如何将其转换为 PEM 文件格式?

0 投票
1 回答
267 浏览

go - 我将如何验证 128 长度的 ED25519 签名

我遇到了 Gocrypto/ed25519软件包的问题。我正在尝试验证消息的签名,但我必须验证的签名和公钥比crypto/ed25519支持的要长。

crypto/ed25519包中,支持的密钥和签名的长度有限制:

但是我必须用来验证消息的密钥比这长:

当我尝试使用Verify(...)它返回的函数时,false由于我的签名和公钥大小的大小。我该怎么做才能以当前长度验证我的签名?

0 投票
0 回答
141 浏览

encryption - 短消息的私钥/公钥加密算法,通过 ED25519 给出简短的结果?

我有短消息(<=256 位)需要加密并发布为(HTTP URL)二维码以及公钥。由于 QR 要求,结果也应该保持 256 位长 - 使用方案、服务器名称和 base64 编码生成的 URL 已经有相当长的长度,因此 QR 很容易变得“太大”。

  1. 对于那个密钥大小,RSA 是不可能的。
  2. libsodium使用 ED25519提供crypto_box功能;但对于这些,我还需要传输随机数(24 个字节),结果是例如。48 字节——这使得二维码已经有点笨拙了。
    • 此外,每条消息使用一个(恒定)密钥对和另一个随机生成的密钥意味着还需要嵌入随机密钥,从而扩大结果
    • 使用单个密钥对不起作用 - 如果我使用sec1and加密pub1,我也需要准确发布这些值以进行解密。
  3. 所以我正在考虑使用普通的原始 ED25519 加密和解密。我需要注意 RSA(填充、坏键(如 pub exp 3))之类的陷阱吗?

我的计划是获取输入,对其进行 SHA256,使用哈希值将输入填充到 256 位,然后进行普通的 ED25519 加密。(我将在结果前添加一个键标记,以使键轮换成为可能。)

会出什么问题?毕竟,libsodium 的所有复杂性都必须有一个原因,对吧?

非常感谢您的帮助!

0 投票
1 回答
483 浏览

java - java:使用 BouncyCastle 验证 Ed25519 签名未按预期工作

不幸的是,我没有找到谷歌的答案,所以我想我不妨问问。

我正在尝试编写用于向客户端发送消息、时间戳和签名的库的服务,其中签名应该是sign(privkey, timestamp + message),消息是原始 JSON。我的验证尝试如下:

我已经用 ex 尝试了我的验证方法。这个问题的示例代码,它工作正常;特别是只有“真实”数据才会失败。我对为什么会发生这种情况感到困惑,并希望得到任何建议。