進口?Java . security . key;
進口?Java . security . key pair;
進口?Java . security . key pair generator;
進口?Java . security . nosuchalgorithm exception;
進口?Java . security . private key;
進口?Java . security . public key;
進口?Java . security . securerandom;
進口?Java . security . signature;
進口?Java . security . signature exception;
進口?Java . util . logging . level;
進口?Java . util . logging . logger;
/**
*?ECDSA?160bit?簽名和簽名驗證示例
*/
公共?班級?ECDSASignature?{
公共?靜電?作廢?main(字符串?argv[])?{
signatureTest();
}
公共?靜電?作廢?signatureTest()?{
/**
*?密鑰對生成
*/
KeyPairGenerator?keyPairGenerator?=?null
試試?{
keyPairGenerator?=?keypairgenerator . getinstance(" EC ");
}?接住?(NoSuchAlgorithmException?ex)?{
返回;
}
SecureRandom?secureRandom?=?新的?SecureRandom();
keypairgenerator . initialize(160,securer andom);
KeyPair?配對?=?keypairgenerator . generatekeypair();
鑰匙?公鑰?=?pair . get public();
鑰匙?privateKey?=?pair . get private();
//?字符串
字符串?hako?=?”測試”;
/**
*?私鑰簽名(ECDSA?160位)
*/
byte[]?簽字?=?null
試試?{
簽名?簽名辭職?=?null
簽名辭職?=?signature . getinstance(" NONEwithECDSA ");
signature . init sign((private key)?privateKey?securer andom);
signature . update(hako . getbytes());
簽字?=?signature . sign();
System.out.println("sign:"?+?新的?字符串(符號));
}?接住?(InvalidKeyException?|?NoSuchAlgorithmException?|?SignatureException?ex)?{
logger . get logger(ECD SAS signature . class . getname())。日誌(級別。嚴重嗎?null,?ex);
}
/**
*?用公鑰進行簽名驗證
*/
簽名?signatureVerify?=?null
試試?{
signatureVerify?=?signature . getinstance(" NONEwithECDSA ");
signatureverify . init verify((public key)?public key);
signatureverify . update(hako . getbytes());
布爾?verifyResult?=?signatureVerify.verify(簽名);
系統。out.println(驗證結果“簽名OK”?:?“簽名NG”);
}?接住?(NoSuchAlgorithmException?|?InvalidKeyException?|?SignatureException?e)?{
logger . get logger(ECD SAS signature . class . getname())。日誌(級別。嚴重嗎?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/