问题标签 [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.
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.
openssl - openssl 生成的 ed25519 密钥的精确字节格式
有谁知道,或者可能会指出,提示我到有记录的资源?
我想要的是这样的信息:
关键部分实际上是字节和分隔符是什么,所以我可以手动解析它。
实际上,我很乐意仅获得有关所有格式的信息。因为现在首先关心的是 openssl 密钥格式。其次,openssh 密钥格式似乎完全不同。
rust - 25519-dalek 的主要补充?
我有关键添加,对于曲线 secp256k1,工作:https ://crypto.stackexchange.com/a/83733/17505
哪个输出:
ed25519-dalek 有类似的东西吗? https://docs.rs/ed25519-dalek/1.0.0/ed25519_dalek/
csr - 使用带有 ED25519 的 BouncyCastle(或 SpongyCastle)在 Android(java 或 kotlin)中生成 CSR
有没有办法使用“ed25519 keypair”在android中生成pem格式的CSR?我们可以使用 BouncyCastle (SpongyCastle) 生成和签名 csr ,但使用“RSA”算法和密钥对。我想使用“ed25519”算法和密钥对。
kotlin - Java/Kotlin 输出 Ed25519 密钥对作为 JCE KeyPair 实例和 OpenSSH 格式
我正在使用BouncyCastle库在我的 Kotlin 应用程序中生成 Ed25519 密钥对,并且有两个要求很容易单独实现,但似乎很难同时完成:
- 提供密钥对作为JCE
KeyPair
实例以与第三方 SSH 库一起使用 - 提供 OpenSSH .pub 格式的公钥供用户复制并粘贴到 git 存储库提供程序,例如 GitHub(即
ssh-ed25519 <encoded key> <comment>
)
我有两个使用 BouncyCastle 生成密钥的选项,每个选项都使这些要求中的一个变得容易。
使用 BouncyCastle 生成器直接生成
这给了我一个包含 的密钥,这使得使用BouncyCastle 提供Ed25519PublicKeyParameters
的 OpenSSH .pub 格式变得非常容易:OpenSSHPublicKeyUtil
...但是没有明显的方法可以KeyPair
从这里到达 JCE。BouncyCastle JCE 实现似乎使用BCEdDSAPublicKey
和BCEdDSAPrivateKey
作为包装类正是为了这个目的,但它们的构造函数是包私有的。
使用 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 密钥对的另一种方式/库
java - 如何使用 Java 从私钥派生 ed25519 (eddsa) 公钥
我正在研究https://github.com/str4d/ed25519-java库以及 BouncyCastle 等其他一些库,但到目前为止我无法从私钥生成公钥。我对生成密钥对不感兴趣,因为我已经有一个私钥并且只对生成相应的公钥感兴趣。
private-key - 将 OpenSSH ED25519 私钥格式转换为 PEM 格式
我使用生成了一个 ED25519 SSH 密钥对
文件的输出id_ed25519
是 OpenSSH 格式:
我想将其转换为 PEM 文件格式。如果它是 RSA 密钥对,则不需要这样做,因为 RSAid_rsa
密钥已经采用 PEM 文件格式,但 ED25519 密钥对是 OpenSSH 格式。
如何将其转换为 PEM 文件格式?
go - 我将如何验证 128 长度的 ED25519 签名
我遇到了 Gocrypto/ed25519
软件包的问题。我正在尝试验证消息的签名,但我必须验证的签名和公钥比crypto/ed25519
支持的要长。
在crypto/ed25519
包中,支持的密钥和签名的长度有限制:
但是我必须用来验证消息的密钥比这长:
当我尝试使用Verify(...)
它返回的函数时,false
由于我的签名和公钥大小的大小。我该怎么做才能以当前长度验证我的签名?
encryption - 短消息的私钥/公钥加密算法,通过 ED25519 给出简短的结果?
我有短消息(<=256 位)需要加密并发布为(HTTP URL)二维码以及公钥。由于 QR 要求,结果也应该保持 256 位长 - 使用方案、服务器名称和 base64 编码生成的 URL 已经有相当长的长度,因此 QR 很容易变得“太大”。
- 对于那个密钥大小,RSA 是不可能的。
- libsodium使用 ED25519提供
crypto_box
功能;但对于这些,我还需要传输随机数(24 个字节),结果是例如。48 字节——这使得二维码已经有点笨拙了。- 此外,每条消息使用一个(恒定)密钥对和另一个随机生成的密钥意味着还需要嵌入随机密钥,从而扩大结果
- 使用单个密钥对不起作用 - 如果我使用
sec1
and加密pub1
,我也需要准确发布这些值以进行解密。
- 所以我正在考虑使用普通的原始 ED25519 加密和解密。我需要注意 RSA(填充、坏键(如 pub exp 3))之类的陷阱吗?
我的计划是获取输入,对其进行 SHA256,使用哈希值将输入填充到 256 位,然后进行普通的 ED25519 加密。(我将在结果前添加一个键标记,以使键轮换成为可能。)
会出什么问题?毕竟,libsodium 的所有复杂性都必须有一个原因,对吧?
非常感谢您的帮助!
java - java:使用 BouncyCastle 验证 Ed25519 签名未按预期工作
不幸的是,我没有找到谷歌的答案,所以我想我不妨问问。
我正在尝试编写用于向客户端发送消息、时间戳和签名的库的服务,其中签名应该是sign(privkey, timestamp + message)
,消息是原始 JSON。我的验证尝试如下:
我已经用 ex 尝试了我的验证方法。这个问题的示例代码,它工作正常;特别是只有“真实”数据才会失败。我对为什么会发生这种情况感到困惑,并希望得到任何建议。