当前位置: 首页 > 知识库问答 >
问题:

如何使用海绵城堡为比特币曲线(secp256k1)创建ECDSA keypair (256bit)?

叶英哲
2023-03-14

目前,我正在使用此方法创建keyPair

private  KeyPair getKeyPair() throws NoSuchAlgorithmException, NoSuchProviderException, InvalidAlgorithmParameterException {
    KeyPairGenerator keyGen = KeyPairGenerator.getInstance("ECDsA", "SC");
    ECGenParameterSpec ecSpec = new ECGenParameterSpec("secp256k1");
    keyGen.initialize(ecSpec, new SecureRandom());
    return keyGen.generateKeyPair();
}

KeyPairGenerator有另一种方法,我可以在其中指定keySize,但我不确定如何传递键值?

 public void initialize(int keysize, SecureRandom random)

共有2个答案

许嘉福
2023-03-14

KeyPairGenerator 的文档说 initialize(int, SecureRandom) 是这样做的:

使用给定的随机源(和默认参数集)初始化某个密钥大小的密钥对生成器。

KeyPairGenerator是一个抽象类,我假设这个“默认参数集”是由您正在使用的特定子类决定的。您可以尝试弄清楚您的KeyPairGenerator对象到底是什么类,然后查阅该类的留档以了解在哪里可以设置其默认参数。

张和豫
2023-03-14

您的代码已经足够了,并且指定“secp256k1”已经设置了正确的大小。< code>initialize(int,SecureRandom)方法是< code > initialize(algorithm parameter spec,SecureRandom)的替代方法。你只能选一个,不能两个都选。如果您调用指定键大小(比如256)的那个,BC提供程序将尝试选择一个正确大小的默认曲线(对于256,它将是“prime256v1”,也称为“P-256”或“secp256r1”)。

 类似资料:
  • 问题内容: 目前,我正在使用此方法创建keyPair 还有另一种方法,我可以指定keySize,但不确定如何传递keySpecs? 问题答案: 您的代码已经足够,并且指定“ secp256k1”已经设置了正确的大小。该方法是一种 替代 到; 您呼叫一个或另一个,而不是两个都呼叫。如果调用指定密钥大小的密钥(例如256),则BC提供程序将尝试选择正确大小的默认曲线(对于256,它将是“ prime2

  • 问题内容: 我已经花了大约一个星期以上的时间来实现我想到的方法。我遇到(并阅读了)许多关于所有这些不同方法的文章,但是我仍然感到困惑,因此我希望有人可以传播他们对这些主题的知识,以便我可以更轻松地创建我所追求的方法并在Android中实现它。 我的“寻求”方法: 必须生成RSA公钥和私钥 公众必须具有PKCS#1填充 必须为RSA 2048 返回字节数组中的公钥 显然,您可以通过以下四种方法进行处

  • 问题内容: 此单元测试失败: 以下是我的MessageDigest类的实现: } ` 测试失败的原因如下: 当我将byte []摘要转换为字符串时,我感觉我没有使用正确的编码方案。任何帮助,将不胜感激。 问题答案: 您期望的值是十六进制编码的值。您正在基于原始字节创建字符串,这将不起作用。 您应该尽可能使用标准的Java Crypto API,而不是BouncyCastle特定的API。 尝试以下

  • 比特币是人类历史上第一种数字货币。 什么是数字货币?一句话概括,数字货币是基于数学加密原理构建的不可伪造的货币系统,而比特币是第一个基于数学加密原理构建的分布式数字货币系统。 比特币和区块链有什么关系?一句话概括,比特币使用区块链技术实现了数字货币的可信支付。 比特币的历史可以追溯到2008年10月,一个名叫中本聪的神秘人物在一个密码学朋克论坛上发表了一篇比特币:一种点对点的电子现金系统的文章,这

  • 在我们继续之前,我们需要先来知道“菲亚特”或“菲亚特货币”的含义。 菲亚特货币由政府宣布为其控制的领土内的法定货币。仅因政府监管或法律而具有价值的菲亚特货币不受黄金或白银等实物商品的支持。法定货币的价值来自供需关系和发行政府的稳定性,而不是支持它的商品的价值。它基于经济的信念和信誉。大多数现代纸币都是法定货币。 每个加密货币的新手都想知道如何兑现比特币或从比特币中提取到法定货币(美元,欧元,印度卢

  • 我看到API中有CMSSignedDataGenerator,但我不知道它是否适用于我的情况,如果适用,如何.... 我也不明白为什么,如果创建的证书是PKCS12证书,那么为什么他们使用PKCS9变量来构建它。