我正在开发分布式数字签名,它对文档进行签名并通过网络将其发送到应用程序服务器。我正在使用 java 中的套接字编程来做到这一点。我认为应该对公钥进行编码或压缩,即 x 和 y 值以某种方式表示为单个二进制数据并保存在公共注册表或网络中。但我不知道如何在 java 中做到这一点。
// I have class like this
public class CryptoSystem{
EllipticCurve ec = new EllipticCurve(new P192());
//-------------------
//--------------------
public ECKeyPair generatekeyPair()
{
return ECKeyPair(ec);
}
}
// i don't think i have problem in the above
CryptoSystem crypto = new CryptoSystem();
ECKeyPair keyPair = crypto.generateKeyPair();
BigInteger prvKey = keyPair.getPrivateKey();
ECPoint pubKey = keyPair.getPublicKey();
// recommend me here to compress and send it the public key to a shared network.
我想知道如何对公钥和域参数进行编码,以便签名的验证者对其进行解码以使用它。因为当您通过网络将它们发送给验证者时,您必须将其编码为单字节数组.我没有使用 Bouncy Castle Provider。ECDSA算法的整个实现是我的项目