package org.pzone.crypto; import org.bouncycastle.math.ec.ECPoint; import org.pzone.crypto.SM2; import org.pzone.crypto.SM2KeyPair; import test.java.org.pzone.crypto.ComFn; import java.math.BigInteger; public class TestSM2 { public static void main(String[] args) { SM2 x = new SM2(); x.setDebug(true); /* SM2KeyPair keys = x.generateKeyPair(); ECPoint pubKey = keys.getPublicKey(); BigInteger privKey = keys.getPrivateKey(); x.exportPrivateKey(privKey, "pri_key.ksm"); x.exportPublicKey(pubKey, "pub_key.ksm"); */ BigInteger privKey = x.importPrivateKey("pri_key.ksm"); ECPoint pubKey = x.importPublicKey("pub_key.ksm"); byte[] pubk = pubKey.getEncoded(false); System.err.println(pubk.length + " pub_Key:" + ComFn.bytesToHexString(pubk, pubk.length)); byte[] kx = pubKey.getXCoord().getEncoded(); System.err.println(kx.length + " pubKeyX:" + ComFn.bytesToHexString(kx, kx.length)); byte[] ky = pubKey.getYCoord().getEncoded(); System.err.println(ky.length + " pubKeyY:" + ComFn.bytesToHexString(ky, ky.length)); System.err.println("pubKey:" + pubKey.toString()); byte[] pk = privKey.toByteArray(); if (pk[0] == 0) { byte[] tmp = new byte[pk.length - 1]; System.arraycopy(pk, 1, tmp, 0, tmp.length); pk = tmp; } System.err.println(pk.length + " privKey:" + ComFn.bytesToHexString(pk, pk.length)); System.err.println(privKey.toString()); for(int n=0; n<1; n++) { byte[] data = x.encrypt( "公司名称:福光电子\n" + "项目名称:BTS监控平台V1.23\n" + "lisence类型:永久可用", pubKey); //System.out.println("encrypt len: " + data.length); //System.out.println("encrypt: " + ComFn.bytesToHexString(data, data.length)); String origin = x.decrypt(data, privKey); //System.out.println("decrypt: " + origin); //System.out.println("decrypt len: " + origin.length()); } } }