Java生成密钥,保存密钥的实例源码,通过本源码可以了解到Java如何产生单钥加密的密钥(myKey),产生双钥的密钥对(keyPair),如何保存公钥的字节数组,保存私钥到文件privateKey.dat,
Java验证公钥私钥签名认证示例如下
importsecurity.KeyPair;
importsecurity.KeyPairGenerator;
importsecurity.NoSuchAlgorithmException;
importsecurity.Signature;
/**
*
* @since?2015年8月20日?下午2:22:08
*?@author?hym
*/
publicclass?SignDemo?{
/**得到产生的私钥/公钥对
*?@return
*?@author?hym
*/
public?static?KeyPair?getKeypair(){
//产生RSA密钥对(myKeyPair)
KeyPairGenerator?myKeyGen?=?null;
try?{
myKeyGen?=?KeyPairGenerator.getInstance(“RSA”);
initialize(1024);
}?catch?(NoSuchAlgorithmException?e)?{
printStackTrace();
}
KeyPair?myKeyPair?=?myKeyGen.generateKeyPair();
return?myKeyPair;
}
/**根据密钥对对信息进行加密,返回公钥值
*?@param?mySig
*?@param?myKeyPair
*?@param?infomation
*?@return
*?@author?hym
*/
public?static?byte[]?getpublicByKeypair(Signature?mySig,KeyPair?myKeyPair,byte[]?infomation){
byte[]?publicInfo=null;
try?{
initSign(myKeyPair.getPrivate());??//用私钥初始化签名对象
update(infomation);??//将待签名的数据传送给签名对象
publicInfo?=?mySig.sign();??//返回签名结果字节数组
}?catch?(Exception?e)?{
printStackTrace();
}
return?publicInfo;
}
/**公钥验证签名
*?@param?mySig
*?@param?myKeyPair
*?@param?infomation
*?@param?publicInfo
*?@return
*?@author?hym
*/
public?static?boolean?decryptBypublic(Signature?mySig,??KeyPair?myKeyPair,String?infomation,byte[]?publicInfo){
boolean?verify=false;
try?{
initVerify(myKeyPair.getPublic());??//使用公钥初始化签名对象,用于验证签名
update(infomation.getBytes());?//更新签名内容
verify=?mySig.verify(publicInfo);?//得到验证结果
}?catch?(Exception?e)?{
printStackTrace();
}
return?verify;
}
public?static?void?main(String[]?args)?{
try?{
KeyPair?keyPair=getKeypair();
Signature?mySig?=?Signature.getInstance(“MD5WithRSA”);//用指定算法产生签名对象
byte[]?publicinfo=getpublicByKeypair(mySig,keyPair,”验证我”.getBytes());
boolean?verify=decryptBypublic(mySig,?keyPair,?“验证我”,?publicinfo);
out.println(“验证签名的结果是:”+verify);
}?catch?(NoSuchAlgorithmException?e)?{
printStackTrace();
}
}
代码签名证书是保护开发者的劳动成果,给自己开发的软件签名的证书,保证代码在签名之后不被恶意篡改。用户可通过对代码的数字签名来标识软件来源,辨别软件开发者的真实身份。GDCA的代码签名证书支持多种代码签名,并已通过WEBTRUST国际认证,是全球认证的代码签名证书。