import java.io.IOException;
import java.io.StringWriter;
import java.security.KeyPair;
import java.security.KeyPairGenerator;
import java.security.NoSuchAlgorithmException;
import java.security.SecureRandom;
import java.security.interfaces.DSAPrivateKey;
import java.security.interfaces.DSAPublicKey;
import java.util.HashMap;
import java.util.Map;
import org.bouncycastle.openssl.PEMWriter;
public class GeneratePrivateKey
{
/**
* 生成密钥对
* @param seed
* 种子
* @return 密钥对象
* @throws NoSuchAlgorithmException
* @throws Exception
*/
public static Map<String, Object> initKey(String seed)
throws NoSuchAlgorithmException
{
KeyPairGenerator keygen = KeyPairGenerator.getInstance("DSA");
// 初始化随机产生器
SecureRandom secureRandom = new SecureRandom();
secureRandom.setSeed(seed.getBytes());
keygen.initialize(1024, secureRandom);
KeyPair keys = keygen.genKeyPair();
// DSA的公钥
DSAPublicKey publicKey = (DSAPublicKey)keys.getPublic();
// DSA的私钥
DSAPrivateKey privateKey = (DSAPrivateKey)keys.getPrivate();
Map<String, Object> map = new HashMap<String, Object>();
map.put("publicKey", publicKey);
map.put("privateKey", privateKey);
return map;
}
/**
* 取得私钥
* @param keyMap
* @return
* @throws Exception
*/
public static DSAPrivateKey getPrivateKey(Map<String, Object> keyMap)
{
return (DSAPrivateKey)keyMap.get("privateKey");
}
/**
* 取得公钥
* @param keyMap
* @return
* @throws Exception
*/
public static DSAPublicKey getPublicKey(Map<String, Object> keyMap)
{
return (DSAPublicKey)keyMap.get("publicKey");
}
/**
* 生成PEM文件
* @param object
* @return
* @throws IOException
*/
public static String getPEMStr(Object object) throws IOException
{
StringWriter stringWriter = new StringWriter();
PEMWriter pemWriter = new PEMWriter(stringWriter);
//pemWriter.writeObject( keyPair.getPrivate());
pemWriter.writeObject(object);
pemWriter.close();
return stringWriter.toString();
}
}