package test.java.org.pzone.crypto;
|
|
import org.bouncycastle.math.ec.ECPoint;
|
import org.pzone.crypto.SM2;
|
import org.pzone.crypto.SM2KeyPair;
|
|
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());
|
}
|
}
|
}
|