Este artigo descreve o algoritmo de assinatura digital Java DSA. Compartilhe -o para sua referência, como segue:
1. Introdução
DSS: padrão de assinatura digital
DSA: algoritmo de assinatura digital de algoritmo de assinatura digital
DSA contém apenas assinaturas digitais
2. Descrição do parâmetro
3. Implementação de código
pacote com.imooc.security.dsa; importar java.security.keyFactory; importar java.security.Keypair; importar java.security.KeypairGenerator; import java.security.PrivateKey; import java.Security.PublicKey; java.security.interfaces.dsApublicKey; importar java.security.spec.pkcs8encodedkeyspec; importar java.security.spec.x509encodedKeyspec; import org.apache.commons.codec.binary.Hex; public Class IMOOCDSAsA {private StuRatic.binary.binary) public static void main (string [] args) {jdkdsa (); } public static void jdkdsa () {tente {// 1. KeyypairGenerator de tecla de inicialização KEYYPAIRGINETER = keyyGenerator.getInstance ("DSA"); keypairGenerator.initialize (512); Teclado do teclado = keypairGenerator.GeraReKeypair (); Dsapublickey dsapublickey = (dsapublickey) teclado.getpublic (); Dsaprivatekey dsaprivateKey = (dsaprivatekey) keypair.getprivate (); // 2. Execute o PKCS8ENCODKEDKEYSPEC PKCS8ENCODEDKEYSPEC = new PKCS8ENCODEDKEYSPEC (dsaprivateKey.getEnCoded ()); KeyFactory keyFactory = keyFactory.GetInstance ("DSA"); PrivateKey privateKey = keyFactory.GeneratePrivate (PKCS8ENCODEDKEYSPEC); Assinatura assinatura = assinatura.getInstance ("sha1withdsa"); assinatura.initsign (privateKey); Signature.Update (src.getBytes ()); byte [] resultado = assinatura.sign (); System.out.println ("JDK DSA Sign:" + hex.encodeHexString (resultado)); // 3. Verifique a assinatura x509encodedkeyspec x509EncodedKeyspec = new X509EncodedKeyspec (dsapublickey.getEncoded ()); keyFactory = keyFactory.GetInstance ("DSA"); PublicKey PublicKey = keyFactory.GeneratePublic (x509EncodedKeyspec); assinatura = assinatura.getInstance ("sha1withdsa"); Signature.initVerify (PublicKey); Signature.Update (src.getBytes ()); boolean bool = assinatura.Verify (resultado); System.out.println ("JDK DSA verifique:" + bool); } catch (Exceção e) {e.printStackTrace (); }}}4. Perceba o efeito
JDK DSA SING: 302C0214310539F9E19EC98167A687EB4E8F91E7F47326BF021428080B7F0AD2CFFCCE
JDK DSA Verifique: Verdadeiro
5. Cenários de aplicação
PS: Amigos interessados em criptografia e descriptografia também podem se referir às ferramentas on -line deste site:
Ferramentas de criptografia/descriptografia online RSA:
http://tools.vevb.com/password/rsa_encode
Texto Ferramentas de criptografia e descriptografia on -line (incluindo AES, DES, RC4, etc.):
http://tools.vevb.com/password/txt_encode
Ferramenta de criptografia online do MD5:
http://tools.vevb.com/password/createmd5password
Ferramenta de criptografia de algoritmo de hash/hash online:
http://tools.vevb.com/password/hash_encrypt
Online md5/hash/sha-1/sha-2/sha-256/sha-512/sha-3/ripemd-160 ferramenta de criptografia:
http://tools.vevb.com/password/hash_md5_sha
Online SHA1/SHA224/SHA256/SHA384/SHA512 Ferramenta de criptografia:
http://tools.vevb.com/password/sha_encode
Para obter mais informações sobre o conteúdo relacionado a Java, consulte os tópicos deste site: "Resumo das habilidades de operação matemática de Java", "Tutorial sobre estruturas e algoritmos de dados Java", "Resumo dos caracteres Java e habilidades de operação de cordas", "Resumo da operação Java Dom Node Skills e" Resumo de Java Cache Skills Skills Skills ".
Espero que este artigo seja útil para a programação Java de todos.