ECDSA 实现
/**
* 2009-10-10
*/
package org.zlex.chapter09_3;
import java.math.BigInteger;
import java.security.Key;
import java.security.KeyFactory;
import java.security.KeyPair;
import java.security.KeyPairGenerator;
import java.security.PrivateKey;
import java.security.PublicKey;
import java.security.SecureRandom;
import java.security.Security;
import java.security.Signature;
import java.security.interfaces.ECPrivateKey;
import java.security.interfaces.ECPublicKey;
import java.security.spec.ECFieldFp;
import java.security.spec.ECParameterSpec;
import java.security.spec.ECPoint;
import java.security.spec.EllipticCurve;
import java.security.spec.PKCS8EncodedKeySpec;
import java.security.spec.X509EncodedKeySpec;
import java.util.HashMap;
import java.util.Map;
import org.bouncycastle.jce.provider.BouncyCastleProvider;
/**
* ECDSA安全编码组件
*
* @author 梁栋
* @version 1.0
* @since 1.0
*/
public abstract class ECDSACoder {
/**
* 数字签名 密钥算法
*/
private static final String KEY_ALGORITHM = "ECDSA";
/**
* 数字签名 签名/验证算法
*
* Bouncy Castle支持以下7种算法
* NONEwithECDSA
* RIPEMD160withECDSA
* SHA1withECDSA
* SHA224withECDSA
* SHA256withECDSA
* SHA384withECDSA
* SHA512withECDSA
*/
private static final S