Sto sviluppando la firma digitale distribuita che firma un documento e lo invia attraverso la rete al server delle applicazioni. Sto usando la programmazione dei socket in java per farlo. Penso che la chiave pubblica debba essere codificata o compressa, i valori xey sono in qualche modo rappresentati come dati binari singoli e salvati in un registro pubblico o in una rete.Ma non so come farlo in java.Come comprimere o codificare la chiave pubblica della curva ellittica e metterla in rete?
// 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.
voglio sapere come codificare i parametri chiave e di dominio pubblico, in modo che il verificatore della firma sarà decodificare in modo da utilizzare it.because quando li si invia attraverso la rete al verificatore u gonna devono codifica come array di un singolo byte. Non uso il provider di Bouncy Castle. L'intera implementazione dell'algoritmo ECDSA è il mio progetto
Come si fa a rappresentare in memoria? Sono solo grandi numeri interi, la serializzazione di loro dovrebbe essere facile. – CodesInChaos
Do you vuoi usare la compressione dei punti? Questa è una tecnica in cui serializzi solo la coordinata x e il segno della coordinata y, quindi usa l'equazione della curva per ripristinare la coordinata y. – CodesInChaos
sì, ma oltre alla compressione voglio mettere la compressione chiave pubblica nel registro di rete condiviso in modo che due o più server applicativi lo utilizzino per verificare la firma –