public static KeyPair GenerateKeys() throws NoSuchAlgorithmException,
NoSuchProviderException, InvalidAlgorithmParameterException {
ECParameterSpec ecSpec = ECNamedCurveTable.getParameterSpec("secp256r1");
KeyPairGenerator g = KeyPairGenerator.getInstance("ECDSA", "BC");
g.initialize(ecSpec, new SecureRandom());
return g.generateKeyPair();
}
并希望将它们存储为字节数组,因为稍后我需要将它们导出到我的C应用程序中。我注意到了:
KeyPair vendorKeys = GenerateKeys();
for (byte byt : vendorKeys.getPublic().getEncoded()) {
System.out.println("byt: " + byt);
}
将返回公钥的字节,但长度错误。我想它与以下格式有关:公开密钥的X.509
和私有密钥的PKCS#8
。在寻找帮助时,我发现Java中有一些类,如pkcs8encodedkeyspec
,可以帮助我获取原始密钥,但我不知道如何做到这一点。
私钥或公钥的x和y坐标可以通过BouncyCastle的实现ecprivatekey
和ecpublickey
来确定。使用getd()
可以确定私有密钥,使用getq()
可以确定公钥,例如:
import org.bouncycastle.jce.interfaces.ECPrivateKey;
import org.bouncycastle.jce.interfaces.ECPublicKey;
import org.bouncycastle.util.BigIntegers;
import org.bouncycastle.util.encoders.Hex;
...
ECPublicKey publickKey = (ECPublicKey)vendorKeys.getPublic();
ECPrivateKey privateKey = (ECPrivateKey)vendorKeys.getPrivate();
byte[] rawPrivate = BigIntegers.asUnsignedByteArray(privateKey.getD());
byte[] x = publickKey.getQ().getAffineXCoord().getEncoded();
byte[] y = publickKey.getQ().getAffineYCoord().getEncoded();
byte[] rawPublic = ByteBuffer.allocate(x.length + y.length).put(x).put(y).array();
System.out.println(Hex.toHexString(rawPrivate));
System.out.println(Hex.toHexString(rawPublic));
这里的secp256r1公钥的长度始终为64字节。私钥的大小为32字节,但也可以更小。
dave_thompson_085在他的评论(Java.security.interfaces
)中指出了ecpublickey
和ecprivatekey
的内置Java实现。这里,私钥和公钥的对应方法分别是get()
和getw()
。
在x或y小于32字节的情况下,此实现不会自动填充前导的0x00值,因此必须手动完成。因此,BouncyCastle方法对您来说可能更方便,因为您已经使用了BouncyCastle。
问题内容: 在我的应用程序中,我使用来显示一些日志信息。因为我想突出显示文本中的某些特定行(例如错误消息),所以将设置为“ ”。这样,我可以设置文本格式。 现在,我创建一个JButton,将其内容复制到剪贴板中。这部分很简单,但是我的问题是,当我调用时,我得到了HTML代码,例如: 而不是只获取原始内容: 有没有办法只获取纯文本格式的内容?还是我需要自己将HTML转换为原始文本? 问题答案: 基于
问题内容: 我在相当基本的android开发水平上。 我想从诸如“ http://www.google.com”的页面获取文本。(我将使用的页面只有文本,因此没有图片或类似的东西)所以,要明确:我想将页面上的文本写入应用程序中的字符串等。 我尝试了这段代码,但是我什至不知道它是否能满足我的要求。 无论如何我都无法收到任何文字。我应该怎么做? 问题答案: 从您提供的示例代码中,您甚至没有读取请求的响
问题内容: 有没有办法从获取原始/原始JSON值? 问题: 现在是,但是我需要原始字符串。 有没有办法获得这个原始价值?另外,我无法更改创建方式(例如更改设置),因为它作为参数传递给我的课程… (参考:原始的NJsonSchema问题) 问题答案: 您无法获取原始字符串,无法识别日期字符串并将其转换为自身内部的结构。如果您这样做,则可以看到以下内容: 但是,您可以通过执行以下操作以ISO 8601
问题内容: 我在视图中有一个附加的项目清单: 我正在处理指令中函数中的click事件,将其作为对被单击对象的引用,但是我得到的是对标签的引用,而不是对标签的引用。然后,我必须做这样的事情才能得到: 有没有一种简单的方法可以获取对绑定元素的引用,而无需在我的指令中执行DOM操作? 问题答案: 您需要代替。
问题内容: 我已经在JAX-WS中设置了SOAP WebServiceProvider,但是在弄清楚如何从SOAPMessage(或任何Node)对象中获取原始XML时遇到了麻烦。这是我现在所获取的代码示例,也是我尝试获取XML的地方: 是否有一种简单的方法来获取原始请求的XML?如果有一种方法可以通过设置其他类型的Provider(例如Source)来获取原始XML,那么我也愿意这样做。 问题答
问题内容: 我正在尝试从文件夹中包含在项目中的原始文件获取。但是无论如何,我都会得到一个。 该文件是一个文件,也尝试过使用,也不起作用。使用DOES 播放两个文件都可以。 的回报: 我的代码: 错误: 问题答案: 尝试这种方法,用作您的inputStream。沿着这个地方: 返回一个InputStream 编辑:如果您使用上述方法,请删除这些代码 希望这有帮助,祝你好运!^^