Este artigo descreve o método de implementação do algoritmo RSA em Java. Compartilhe -o para sua referência, como segue:
Uma introdução
O único amplamente aceito e implementado para criptografia de dados e assinatura digital Criptografia de chave pública, Chave de Chave Privada Criptografia Privada Criptografia, Chave Pública Decripção
Descrição do parâmetro de dois RSA
Três realizações
pacote com.imooc.security.rsa; importar java.security.keyfactory; importar java.security.Keypair; importar java.security.keypairGenerator; importar java.security.interfurityKey; import java.security.publickey; Java.Security.Interfaces.rsapublicKey; importar java.security.spec.pkcs8encodedkeyspec; importar java.security.spec.x509encodedKeyspec; src = "cakin24 segurança rsa"; public static void main (string [] args) {jdkrsa (); } public static void jdkrsa () {try {// 1. KeyypairGenerator de tecla de inicialização KEYYPAIRGINETER = KEYYPAIRGERERATOR.GETINSTANCE ("RSA"); keypairGenerator.initialize (512); Teclado do teclado = keypairGenerator.GeraReKeypair (); Rsapublickey rsapublickey = (rsapublickey) teclado.getpublic (); RsaprivateKey RsaprivateKey = (rsaPrivateKey) keypair.getprivate (); System.out.println ("Public Key:" + base64.EncodeBase64String (rsapublicKey.getEncoded ())); System.out.println ("Chave privada:" + base64.EncodeBase64String (rsaprivateKey.getEncoded ())); // 2. Criptografia de chave privada, descriptografia de chave pública-criptografia PKCS8EncodedKeyspec PKCS8ENCODEDKEYSPEC = new PKCS8ENCODEYSPEC (rsaprivateKey.getEncoded ()); KeyFactory keyFactory = keyFactory.getInstance ("rsa"); PrivateKey privateKey = keyFactory.GeneratePrivate (PKCS8ENCODEDKEYSPEC); Cifra cifra = cipher.getInstance ("rsa"); cipher.init (cipher.encrypt_mode, privateKey); byte [] resultado = cipher.dofinal (src.getbytes ()); System.out.println ("Criptografia de chave privada, descriptografia de chave pública-criptografia:" + base64.EncodeBase64String (resultado)); // 3. Criptografia de chave privada, chave pública descriptografia-decripção-decripção x509encodedkeyspec x509encodedkeyspec = new x509EncodedKeyspec (rsapublickey.getEncoded ()); keyFactory = keyFactory.getInstance ("rsa"); PublicKey PublicKey = keyFactory.GeneratePublic (x509EncodedKeyspec); cifra = cipher.getInstance ("rsa"); cipher.init (cipher.decrypt_mode, publicKey); resultado = cipher.Dofinal (resultado); System.out.println ("Criptografia de chave privada, descriptografia de chave pública-decripção:" + new String (resultado)); // 4. Criptografia de chave pública, Chave Privada Decripção-Encripção X509EncodedKeyspec = NOVO X509ENCODEDKEYSPEC (RSAPUBLICKEY.GETENCODED ()); keyFactory = keyFactory.getInstance ("rsa"); publicKey = keyFactory.GeneratePublic (x509EncodedKeyspec); cifra = cipher.getInstance ("rsa"); cipher.init (cipher.encrypt_mode, publicKey); resultado = cipher.dofinal (src.getBytes ()); System.out.println ("Criptografia de chave pública, descriptografia de chave privada-criptografia:" + base64.EncodeBase64String (resultado)); // 5. Criptografia de chave pública, descriptografia de chave privada-decripção-pkcs8encodedKeyspec = new PKCS8ENCODEDKEYSPEC (rsaprivateKey.getEncoded ()); keyFactory = keyFactory.getInstance ("rsa"); privateKey = keyFactory.GeneratePrivate (PKCS8ENCODEDKEYSPEC); cifra = cipher.getInstance ("rsa"); cipher.init (cipher.decrypt_mode, privateKey); resultado = cipher.Dofinal (resultado); System.out.println ("Criptografia de chave pública, descriptografia de chave privada-descriptografia:" + new String (resultado)); } catch (Exceção e) {e.printStackTrace (); }}}Quatro efeitos de realização
Public Key: MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAJcBeOb97IdkkirBmx3MOY5e4eRwh0uvC2BcNlY1rDo0lZ8ibR1bl1RJXWkHv7U0ASO/5DBlnnnGbQRtsJlsCPMCAwEAQ==
Chave privada: MiiBVAIBADANBGKQHKIG9W0BAQEFAsCAT4WGGE6AGeAaKeAlWf45v3SH2SSSSGBHCW5jl7H5HCHCHS68LYFW2VJWSOJSVNYJTHVUXVUXVOQE/TTTQBI7/ KmgweecztBg2Wmwwi8WIDAQABAKADSKPRSL+EW3S2N+CEMIZXFOYB0XHS1D84QAPAFPIXKUNVWL0A4OVRWSNWT4MEJATWVTUFNVTXIZCZDX+Q5DBAI EA9TzzyMGRU+3MDLAX0ICF+NIQWVLQYVEDKA4KSX55GVUCIQCDOEX6MQGRP78AQJYKWEOGWLISZJU5FN/LFVKZRCGBJWIHAMVBBLZZZZKHY0IKW75KD /lksyouty+20bap+midrqgzaia6r36eerkzqubtCl8lxypb5f79htxd5dcvnib/zgp0uwigwtxi7ixhjycsNomsjDu1J3Du9KQQQU/eohxrk/oguye =
Criptografia de chave privada, descriptografia de chave pública - Criptografia: vjkfSoivelvkes5rprhsjk9TDTZOHDELLS7YLUIDCYEE7DKUCM9SRJ8KWADYNHI4M0OLAFJHK647HP7ia8x7a ==
Criptografia de chave privada, descriptografia de chave pública - Decripção: CAKIN24 Security RSA
Criptografia de chave pública, descriptografia de chave privada - Criptografia: GAWL73UXHTO+EFKKPMFMDHTK0VH7HB8N+30L1HP8AAMIAGD21H2X/Q/NS+SOGSOXNOVUNZASGZENMZZZCJB4VEA ==
Criptografia de chave pública, descriptografia de chave privada - descriptografia: Cakin24 Segurança RSA
Cinco 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.