CallmeZhe 2019-01-18
private static PrivateKey privateKey = null;
private static PublicKey publicKey = null;
@BeforeClass
public static void init() {
KeyPairGenerator keyPairGenerator = null;
try {
keyPairGenerator = KeyPairGenerator.getInstance("EC");
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
}
keyPairGenerator.initialize(256, new SecureRandom());
KeyPair keyPair = keyPairGenerator.generateKeyPair();
privateKey = keyPair.getPrivate(); // sun.security.ec.ECPrivateKeyImpl
publicKey = keyPair.getPublic(); // sun.security.ec.ECPublicKeyImpl
byte[] privateKeyEncoded = ((Key) privateKey).getEncoded();
byte[] publicKeyEncoded = ((Key) publicKey).getEncoded();
System.out.println("private key: " + Base64.byteArrayToBase64(privateKeyEncoded));
System.out.println("public key: " + Base64.byteArrayToBase64(publicKeyEncoded));
}@org.junit.Test
public void test() {
String message = "13120983870";
System.out.println(message);
KeyFactory keyFactory = null;
try {
keyFactory = KeyFactory.getInstance("EC");
} catch (NoSuchAlgorithmException e) {
Assert.fail("no such algorithm: " + e.getMessage());
}
// 签名
Signature signature = null;
try {
signature = Signature.getInstance("NONEwithECDSA");
} catch (NoSuchAlgorithmException e) {
Assert.fail("no such algorithm: " + e.getMessage());
}
try {
signature.initSign(privateKey);
} catch (InvalidKeyException e) {
Assert.fail("invalid key: " + e.getMessage());
}
byte[] sign = null;
try {
signature.update(message.getBytes());
sign = signature.sign();
} catch (SignatureException e) {
Assert.fail("signature: " + e.getMessage());
}
System.out.println("signature: " + Base64.byteArrayToBase64(sign));
// 验证
try {
signature.initVerify(publicKey);
} catch (InvalidKeyException e) {
Assert.fail("invalid key: " + e.getMessage());
}
try {
signature.update(message.getBytes());
boolean result = signature.verify(sign);
Assert.assertTrue(result);
} catch (SignatureException e) {
Assert.fail("signature: " + e.getMessage());
}
}private key: MEECAQAwEwYHKoZIzj0CAQYIKoZIzj0DAQcEJzAlAgEBBCCo4Ko3RblXEVy85V4P1ODvLUOAXb2sKvtJmkOV5/HUHQ== public key: MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE6NjtyqaRPShUnTn3OrM9CNnIxKHf3yWv4iFR/LPCcCTfnzGvIb3n/9REss3wjbeBNpZBFStPsYbY+iPWXA3ASw== 13120983870 signature: MEUCIQCse/HImkyfODAdG8Xz0CKc3MSwsLGjY7ObKnlrgMKudAIgWDXfeJ9I9OtwqUuzIDwc148M9gDCXVYikB+0OGNlvBw=