Este artículo describe el algoritmo de firma digital Java DSA. Compártelo para su referencia, como sigue:
1. Introducción
DSS: Estándar de firma digital
DSA: algoritmo de firma digital algoritmo de firma digital
DSA solo contiene firmas digitales
2. Descripción del parámetro
3. Implementación del código
paquete 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.signature; importar; importación; importación; importación; importación; importación; importación; importación; java.security.interfaces.dsaprivatekey; import java.security.interfaces.dsapublickey; import java.security.spec.pkcs8encodedkeyspec; import java.security.spec.x509codedkeyspec; import org.apache.commons.codec.binary {cadena estática privada src = "CAKIN24 Security DSA"; public static void main (string [] args) {jdkdsa (); } public static void jdkdsa () {try {// 1. Clave de inicialización KeyPairGenerator KeyPairGenerator = KeyPairGenerator.getInstance ("DSA"); KeyPairGenerator.initialize (512); KeyPair KeyPair = KeyPairGenerator.GenerateKePAir (); Dsapublickey dsapublickey = (dsapublickey) keypair.getPublic (); Dsaprivatekey dsaprivateKey = (dsaprivatekey) keypair.getPrivate (); // 2. Ejecute la firma 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 [] resultado = firma.sign (); System.out.println ("JDK DSA Sign:" + hex.encodeHexString (resultado)); // 3. Verifique la firma x509CodedKeySpec x509EncodedKeySpec = new X509EncodedKeSpec (dsapublickey.getEncoded ()); keyFactory = keyFactory.getInstance ("dsa"); PublicKey PublicKey = KeyFactory.GeneratePublic (x509EncodedKeySpec); firma = firma.getInstance ("sha1withdsa"); Signature.initverify (PublicKey); Signature.Update (src.getBytes ()); boolean bool = firature.verify (resultado); System.out.println ("JDK DSA Verify:" + bool); } catch (Exception e) {E.PrintStackTrace (); }}}4. Date cuenta del efecto
Signo DSA JDK: 302C0214310539F9E19EC98167A687EB4E8F91E7F47326BF021428080B7F0AD2CCFFC71466998D8D364BA516E840
jdk dsa verificar: verdadero
5. Escenarios de aplicación
PD: Los amigos interesados en el cifrado y el descifrado también pueden referirse a las herramientas en línea de este sitio:
Herramientas de cifrado/descifrado de RSA en línea:
http://tools.vevb.com/password/rsa_encode
Herramientas de cifrado y descifrado en línea de texto (incluyendo AES, DE, RC4, etc.):
http://tools.vevb.com/password/txt_encode
Herramienta de cifrado en línea MD5:
http://tools.vevb.com/password/createmd5password
Herramienta de cifrado de algoritmo de hash/hash en línea:
http://tools.vevb.com/password/hash_encrypt
MD5 en línea/hash/sha-1/sha-2/sha-256/sha-512/sha-3/ripemd-160 herramienta de cifrado:
http://tools.vevb.com/password/hash_md5_sha
En línea SHA1/SHA224/SHA256/SHA384/SHA512 Herramienta de cifrado:
http://tools.vevb.com/password/sha_encode
Para obtener más información sobre el contenido relacionado con Java, consulte los temas de este sitio: "Resumen de las habilidades de operación matemática de Java", "Tutorial sobre estructuras y algoritmos de datos de Java", "Resumen de los caracteres de Java y las habilidades de operación de cadenas", "Resumen de las habilidades de nodo de operación DOM Java" y "Resumen de las habilidades de operación de cache de Java" "
Espero que este artículo sea útil para la programación Java de todos.