标签: curve-25519

有哪些Ed25519的实现?

新SQRL认证方案依赖于曲线Ed25519由丹尼尔·伯恩斯坦开发的加密.但是,为了开始实施该方案,首先需要成熟的Curve Ed25519实现.

有谁知道任何成熟的实现?对于Java,.NET或任何其他流行的平台?

cryptography sqrl curve-25519 ed25519

23
推荐指数
2
解决办法
1万
查看次数

为什么Curve25519参数错误却能正确计算密钥对?

.NET (Core 3.1) 似乎支持 ECC 中的自定义曲线。所以我定义了Curve25519,并通过以下代码生成密钥对:

using System;
using System.Security.Cryptography;

namespace Curve25519
{
    class Program
    {
        static void Main(string[] args)
        {
            ECCurve ecCurve = new ECCurve() // Curve25519, 32 bytes, 256 bit
            {
                CurveType = ECCurve.ECCurveType.PrimeMontgomery,
                B = new byte[] { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1 },
                A = new byte[] …
Run Code Online (Sandbox Code Playgroud)

elliptic-curve diffie-hellman curve-25519 .net-core x25519

7
推荐指数
1
解决办法
1505
查看次数

在 javacard 上使用 Curve25519

我正在考虑在 javacard 3.0.4 上使用 curve25519 但我卡住了,我有以下问题:

javacard 3.0.4 是否支持这样的曲线?

到目前为止,我所尝试的是将蒙哥马利方程转换为魏尔斯特拉斯方程。这样做并使用伯恩斯坦的网站,我得到了以下参数:

p  = 0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffed
a  = 0x2aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa984914a144
b  = 0x7b425ed097b425ed097b425ed097b425ed097b425ed097b4260b5e9c7710c864
r  = 0x1000000000000000000000000000000014def9dea2f79cd65812631a5cf5d3ed
Gx = 0x9
Gy = 0x20ae19a1b8a086b4e01edd2c7748d14c923d4d7e6d7c61b229e9c5a27eced3d9
Run Code Online (Sandbox Code Playgroud)

当我在互联网上发现一些其他值时,我也尝试过

Gx: 0x2aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaad245a
Run Code Online (Sandbox Code Playgroud)

然后我遵循了ykneo-curves的实现,最终得到了这个:

public class Curve25519 {

   public final static byte[] p = { // 32 bytes
        (byte) 0x7f, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff,
        (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, …
Run Code Online (Sandbox Code Playgroud)

encryption signature javacard curve-25519

5
推荐指数
2
解决办法
842
查看次数

如何在终端中生成 Curve25519 密钥对?

我们如何从命令行生成 Curve25519 密钥对?

我们有一台安装了 Homebrew 的 MacBook Air。

  1. 我们应该使用 OpenSSL 还是其他命令行工具?

  2. 我们如何使用该工具生成 Curve25519 密钥对?

command-line-tool public-key-encryption curve-25519

4
推荐指数
1
解决办法
3339
查看次数

Java 11 Curve25519 实现与 Signal 的库不同

在 Java 11 中引入了 curve25519 内置实现。由于我对此一无所知,并且最近才发现它,因此我使用的是 Signal 的库。这是我在切换到 Java 11 的实现之前的代码:

private final Curve25519 CURVE_25519 = Curve25519.getInstance(Curve25519.JAVA);

public Curve25519KeyPair calculateRandomKeyPair() {
    return CURVE_25519.generateKeyPair();
}

public byte[] calculateSharedSecret(byte[] publicKey, byte[] privateKey) {
    return CURVE_25519.calculateAgreement(publicKey, privateKey);
}
Run Code Online (Sandbox Code Playgroud)

这是我现在的代码:

private final String XDH = "XDH";
private final String CURVE = "X25519";

@SneakyThrows
public KeyPair calculateRandomKeyPair() {
    return KeyPairGenerator.getInstance(CURVE).generateKeyPair();
}

@SneakyThrows
public byte[] calculateSharedSecret(byte[] publicKeyBytes, XECPrivateKey privateKey) {
    var paramSpec = new NamedParameterSpec(CURVE);
    var keyFactory = KeyFactory.getInstance(XDH);

    var publicKeySpec = new XECPublicKeySpec(paramSpec, …
Run Code Online (Sandbox Code Playgroud)

java cryptography curve-25519 java-11 java-16

4
推荐指数
1
解决办法
125
查看次数

使用 crypto 模块从 node.js 中的 Curve25519(或 X25519)非对称密钥对生成共享密钥

我正在尝试使用密钥交换算法(如Diffie Hellman密钥交换)在Curve25519 (或 X25519)非对称密钥对之间创建共享密钥。Diffie Hellman密钥交换可以在 node.js 中使用以下代码中的加密模块完成:

const crypto = require('crypto');

// Generate Alice's keys...
const alice = crypto.createDiffieHellman(2048);
const aliceKey = alice.generateKeys(); // Returns public key

// Generate Bob's keys...
const bob = crypto.createDiffieHellman(alice.getPrime(), alice.getGenerator());
const bobKey = bob.generateKeys(); // Returns public key

// Exchange and generate the secret...
const aliceSecret = alice.computeSecret(bobKey);
const bobSecret = bob.computeSecret(aliceKey);

// Should be equal
console.log(aliceSecret === bobSecret)
Run Code Online (Sandbox Code Playgroud)

X25519非对称密钥可以使用以下代码生成:

const crypto = require('crypto'); …
Run Code Online (Sandbox Code Playgroud)

encryption cryptography node.js diffie-hellman curve-25519

4
推荐指数
1
解决办法
4382
查看次数