import java.security.InvalidKeyException; import java.security.KeyPair; import java.security.KeyPairGenerator; import java.security.NoSuchAlgorithmException; import java.security.PrivateKey; import java.security.PublicKey; import java.security.SecureRandom; import java.security.Signature; import java.security.SignatureException; public class EC { public static void main(String[] args) { byte[] message = "The quick brown fox jumps over the lazy dog" .getBytes(); byte[] sign = null; KeyPairGenerator keyPairGenerator = null; long generateKeyPairStart; long generateKeyPairEnd; try { keyPairGenerator = KeyPairGenerator.getInstance("EC"); } catch (NoSuchAlgorithmException e) { e.printStackTrace(); return; } SecureRandom secureRandom = new SecureRandom(); keyPairGenerator.initialize(256, secureRandom); generateKeyPairStart = System.nanoTime(); KeyPair keyPair = keyPairGenerator.generateKeyPair(); generateKeyPairEnd = System.nanoTime(); PrivateKey privateKey = keyPair.getPrivate(); PublicKey publicKey = keyPair.getPublic(); Signature signatureSign = null; long signStart = 0; long signEnd = 0; try { signatureSign = Signature.getInstance("NONEwithECDSA"); signatureSign.initSign(privateKey, secureRandom); signatureSign.update(message); signStart = System.nanoTime(); sign = signatureSign.sign(); signEnd = System.nanoTime(); } catch (NoSuchAlgorithmException e) { e.printStackTrace(); return; } catch (InvalidKeyException e) { e.printStackTrace(); return; } catch (SignatureException e) { e.printStackTrace(); return; } Signature signatureVerify = null; boolean verifyResult; long verifyStart; long verifyEnd; try { signatureVerify = Signature.getInstance("NONEwithECDSA"); signatureVerify.initVerify(publicKey); signatureVerify.update(message); verifyStart = System.nanoTime(); verifyResult = signatureVerify.verify(sign); verifyEnd = System.nanoTime(); if (verifyResult) { System.out.print("OK"); System.out.print("\t"); } else { System.out.print("NG"); System.out.print("\t"); } } catch (NoSuchAlgorithmException e) { e.printStackTrace(); return; } catch (InvalidKeyException e) { e.printStackTrace(); return; } catch (SignatureException e) { e.printStackTrace(); return; } System.out.print(generateKeyPairEnd - generateKeyPairStart); System.out.print("\t"); System.out.print(signEnd - signStart); System.out.print("\t"); System.out.print(verifyEnd - verifyStart); System.out.println(); } }