古詩詞大全網 - 個性簽名 - 電子簽名用Java怎麽實現

電子簽名用Java怎麽實現

import?java.security.InvalidKeyException;

import?java.security.Key;

import?java.security.KeyPair;

import?java.security.KeyPairGenerator;

import?java.security.NoSuchAlgorithmException;

import?java.security.PrivateKey;

import?java.security.PublicKey;

import?java.security.SecureRandom;

import?java.security.Signature;

import?java.security.SignatureException;

import?java.util.logging.Level;

import?java.util.logging.Logger;

/**

*?ECDSA?160bit?簽名及簽名驗證例子

*/

public?class?ECDSASignature?{

public?static?void?main(String?argv[])?{

signatureTest();

}

public?static?void?signatureTest()?{

/**

*?密鑰對生成

*/

KeyPairGenerator?keyPairGenerator?=?null;

try?{

keyPairGenerator?=?KeyPairGenerator.getInstance("EC");

}?catch?(NoSuchAlgorithmException?ex)?{

return;

}

SecureRandom?secureRandom?=?new?SecureRandom();

keyPairGenerator.initialize(160,?secureRandom);

KeyPair?pair?=?keyPairGenerator.generateKeyPair();

Key?publicKey?=?pair.getPublic();

Key?privateKey?=?pair.getPrivate();

//?字符串

String?hako?=?"test";

/**

*?私鑰簽名(ECDSA?160bit)

*/

byte[]?sign?=?null;

try?{

Signature?signatureSign?=?null;

signatureSign?=?Signature.getInstance("NONEwithECDSA");

signatureSign.initSign((PrivateKey)?privateKey,?secureRandom);

signatureSign.update(hako.getBytes());

sign?=?signatureSign.sign();

System.out.println("sign:?"?+?new?String(sign));

}?catch?(InvalidKeyException?|?NoSuchAlgorithmException?|?SignatureException?ex)?{

Logger.getLogger(ECDSASignature.class.getName()).log(Level.SEVERE,?null,?ex);

}

/**

*?用公鑰進行簽名驗證

*/

Signature?signatureVerify?=?null;

try?{

signatureVerify?=?Signature.getInstance("NONEwithECDSA");

signatureVerify.initVerify((PublicKey)?publicKey);

signatureVerify.update(hako.getBytes());

boolean?verifyResult?=?signatureVerify.verify(sign);

System.out.println(verifyResult"簽名OK"?:?"簽名NG");

}?catch?(NoSuchAlgorithmException?|?InvalidKeyException?|?SignatureException?e)?{

Logger.getLogger(ECDSASignature.class.getName()).log(Level.SEVERE,?null,?e);

}

}

}

/java-%E7%94%B5%E5%AD%90%E7%AD%BE%E5%90%8D%E8%8C%83%E4%BE%8B%E4%BB%A3%E7%A0%81/