Cet article décrit l'algorithme de signature numérique Java DSA. Partagez-le pour votre référence, comme suit:
1. Introduction
DSS: Norme de signature numérique
DSA: algorithme de signature numérique algorithme numérique
La DSA contient uniquement des signatures numériques
2. Description du paramètre
3. Implémentation du code
package com.imooc.security.dsa; import java.security.keyfactory; import java.security.keypair; import java.security.keypairgenerator; import java.security.privatekey; import java.security.publickey; import java.security.ssignature; import; java.security.interfaces.dsaprivateKey; import java.security.interfaces.dsapublickey; import java.security.spec.pkcs8encodedkeyspec; import java.security.spec.x509encodedkeyspec; import org.apache.Comons.codec. chaîne statique src = "Cakin24 Security DSA"; public static void main (String [] args) {jdkdsa (); } public static void jdkdsa () {try {// 1. Key KeyPAirGenerator KeyPainerator = KeyPainerator.getInstance ("DSA"); KeyPairGenerator.Initialize (512); Keypair keypair = keypairgenerator.generateKeypair (); DSAPUBLICKEY DSAPUBLICKEY = (DSAPUBLICKEY) KeyPAir.GetPublic (); DsaprivateKey dsaprivateKey = (dsaprivateKey) keypair.getPrivate (); // 2. Exécutez la signature PKCS8EncodedKeySpec PKCS8EncodedKeyspec = new pkcs8EncodedKeyspec (dsaprivateKey.getEncoded ()); KeyFactory keyFactory = keyFactory.getInstance ("dsa"); PrivateKey privateKey = keyfactory.generatePrivate (pkcs8encodedKeyspec); Signature signature = signature.getInstance ("sha1withdsa"); Signature.InitSign (PrivateKey); Signature.update (src.getBytes ()); byte [] result = signature.sign (); System.out.println ("Signe JDK DSA:" + hex.encodehexString (résultat)); // 3. Vérifiez la signature x509EncodedKeyspec X509EncodedKeyspec = new x509EncodedKeyspec (dsapublicKey.getEncoded ()); keyFactory = keyfactory.getInstance ("dsa"); PublicKey publicKey = keyFactory.GenateRedPublic (x509encodedKeyspec); signature = signature.getInstance ("sha1withdsa"); Signature.Initverify (publicKey); Signature.update (src.getBytes ()); Boolean bool = signature.Verify (résultat); System.out.println ("JDK DSA Verify:" + bool); } catch (exception e) {e.printStackTrace (); }}}4. Réalisez l'effet
JDK DSA Signe: 302C0214310539F9E19EC98167A687EB4E8F91E7F47326BF021428080B7F0AD2CCFCC7146698D8D364BA516E840
JDK DSA Vérifiez: True
5. Scénarios d'application
PS: Les amis qui sont intéressés par le cryptage et le décryptage peuvent également se référer aux outils en ligne de ce site:
Outils de chiffrement / décryptage RSA en ligne:
http://tools.vevb.com/password/rsa_encode
Texte en ligne de chiffrement et de décryptage (y compris AES, DES, RC4, etc.):
http://tools.vevb.com/password/txt_encode
Outil de cryptage en ligne MD5:
http://tools.vevb.com/password/createmd5password
Outil de chiffrement en ligne de hachage / hachage de hachage:
http://tools.vevb.com/password/hash_encrypt
MD5 / HASH / SHA-1 / SHA-2 / SHA-256 / SHA-512 / SHA-3 / RIMEMD-160 Tool:
http://tools.vevb.com/password/hash_md5_sha
En ligne SHA1 / SHA224 / SHA256 / SHA384 / SHA512 Outil de cryptage:
http://tools.vevb.com/password/sha_encode
Pour plus d'informations sur le contenu lié à Java, veuillez consulter les sujets de ce site: "Résumé des compétences en fonctionnement mathématique de Java", "Tutorial sur les structures de données Java et les algorithmes", "Résumé des caractères Java et des compétences de l'opération de chaîne", "Résumé de l'opération Java Dom Skills" et "Résumé des compétences de l'opération Java Cache"
J'espère que cet article sera utile à la programmation Java de tous.