首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >secp256k1在eclipse中不工作/支持吗?

secp256k1在eclipse中不工作/支持吗?
EN

Stack Overflow用户
提问于 2020-10-10 21:23:41
回答 3查看 1.9K关注 0票数 1

获取此错误:

java.security.InvalidAlgorithmParameterException:

无支撑曲线: secp256k1 (1.3.132.0.10)

有什么方法可以在eclipse中使用secp256k1吗?我找不到任何帮助。如何使用secp256k1生成椭圆曲线的公钥和私钥对?

代码语言:javascript
复制
import java.security.KeyPair;
import java.security.KeyPairGenerator;
import java.security.PrivateKey;
import java.security.PublicKey;
import java.security.spec.ECGenParameterSpec;
import java.security.spec.*;

public class ECCKeyGeneration {

    public static void main(String[] args) {
        try {
            KeyPairGenerator kpg;
            kpg = KeyPairGenerator.getInstance("EC");
            ECGenParameterSpec ecsp;
            ecsp = new ECGenParameterSpec("secp256k1");
            kpg.initialize(ecsp);

            KeyPair kp = kpg.genKeyPair();
            PrivateKey privKey = kp.getPrivate();
            PublicKey pubKey = kp.getPublic();

            System.out.println(privKey.toString());
            System.out.println(pubKey.toString());
        } catch (Exception ex) {
            System.out.println(ex);
        }
    }
}
EN

回答 3

Stack Overflow用户

发布于 2020-10-10 21:49:36

通常,这个问题取决于Java版本,而不是Eclipse。请运行下面的程序(稍微编辑你的版本),并给我们的版本,运行在您的机器上。

这是一个在线编译器的输出(直接链接:https://repl.it/@javacrypto/JavaEllipticCurveAvailable)

代码语言:javascript
复制
Java Version: main: 11 major: 0 minor: 8+10-post-Ubuntu-0ubuntu118 update: 04 build: 1
sun.security.ec.ECPrivateKeyImpl@5403
Sun EC public key, 256 bits
  public x coord: 40409384899581786570368833959823834602401842042090899775653557207593518019107
  public y coord: 55894232296453671204408524113424724230763480655586911101265852946730642819727
  parameters: secp256k1 (1.3.132.0.10)

代码:

代码语言:javascript
复制
import java.security.KeyPair;
import java.security.KeyPairGenerator;
import java.security.PrivateKey;
import java.security.PublicKey;
import java.security.spec.ECGenParameterSpec;
import java.security.spec.*;

public class Main {

    public static void main(String[] args) {
      System.out.println("Java Version: " + getJavaVersion());
        try {
            KeyPairGenerator kpg;
            kpg = KeyPairGenerator.getInstance("EC");
            ECGenParameterSpec ecsp;
            ecsp = new ECGenParameterSpec("secp256k1");
            kpg.initialize(ecsp);

            KeyPair kp = kpg.genKeyPair();
            PrivateKey privKey = kp.getPrivate();
            PublicKey pubKey = kp.getPublic();

            System.out.println(privKey.toString());
            System.out.println(pubKey.toString());
        } catch (Exception ex) {
            System.out.println(ex);
        }
    }
    public static String getJavaVersion() {
        String[] javaVersionElements = System.getProperty("java.runtime.version").split("\\.|_|-b");
        String main = "", major = "", minor = "", update = "", build = "";
        int elementsSize = javaVersionElements.length;
        if (elementsSize > 0) {main = javaVersionElements[0];}
        if (elementsSize > 1) {major   = javaVersionElements[1];}
        if (elementsSize > 2) {minor   = javaVersionElements[2];}
        if (elementsSize > 3) {update  = javaVersionElements[3];}
        if (elementsSize > 4) {build   = javaVersionElements[4];}
        return "main: " + main + " major: " + major + " minor: " + minor + " update: " + update + " build: " + build;
    }
}
票数 2
EN

Stack Overflow用户

发布于 2022-07-08 23:14:42

//特定的可靠提供者,甚至可以使用java 17+。

KeyPairGenerator.getInstance("EC", "BC")

票数 1
EN

Stack Overflow用户

发布于 2022-08-22 12:55:55

我正在使用。

最低要求- OpenJDK版本11.0.5

代码语言:javascript
复制
public static void main(String[] args) 
    throws NoSuchAlgorithmException, InvalidAlgorithmParameterException {

    KeyPairGenerator kpg = KeyPairGenerator.getInstance("EC");

    ECGenParameterSpec m = new ECGenParameterSpec("secp256k1");

    kpg.initialize(m);

    ECPrivateKey privateKey = (ECPrivateKey) kpg.generateKeyPair().getPrivate();

    ECPublicKey publicKey = (ECPublicKey) kpg.generateKeyPair().getPublic();

    System.out.println("Base64 encoded private key : " + Base64.getEncoder().encodeToString(privateKey.getEncoded()));

    System.out.println("Base64 encoded public key : " + Base64.getEncoder().encodeToString(publicKey.getEncoded()));
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64298440

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档