Este artículo describe el método de implementación del algoritmo RSA en Java. Compártelo para su referencia, como sigue:
Una introducción
El único ampliamente aceptado e implementado para el cifrado de datos y el cifrado de clave pública de firma digital, cifrado de clave privada de descifrado de clave privada, descifrado de clave pública
Descripción de dos parámetros RSA
Tres realizaciones
paquete com.imooc.security.rsa; import java.security.keyFactory; import java.security.keypair; import java.security.keypairGenerator; import java.security.privatekey; import java.sssuprickey; import java.security.interfaces.RsapRiMaRes; java.security.interfaces.rsapublickey; import java.security.spec.pkcs8EncodedkeySpec; import java.security.spec.x509EncodedkeySpec; import javax.crypto.ciPher; import og.apache.commons.codec.binary.base64; importación IMOCRES Cadena src = "CAKIN24 Security RSA"; public static void main (string [] args) {jdkrsa (); } public static void jdkrsa () {try {// 1. Clave de inicialización KeyPairGenerator KeyPairGenerator = KeyPairGenerator.getInstance ("RSA"); KeyPairGenerator.initialize (512); KeyPair KeyPair = KeyPairGenerator.GenerateKePAir (); Rsapublickey rsapublickey = (rsapublickey) keypair.getPublic (); Rsaprivatekey rsaprivateKey = (rsaprivatekey) keypair.getPrivate (); System.out.println ("clave pública:" + base64.encodeBase64String (rsapublickey.getEncoded ())); System.out.println ("Key private:" + base64.encodeBase64String (rsaprivatekey.getEncoded ())); // 2. Cifrado de clave privada, descifrado de clave pública: cifrado PKCS8CodedKeySpec PKCS8EncodedKeySpec = new PKCS8EncodedKeySpec (rsaprivatekey.getEnded ()); KeyFactory KeyFactory = KeyFactory.GetInstance ("RSA"); PrivateKey privateKey = keyFactory.GeneratePrivate (PKCS8EncodedKeySpec); Cifrado cifrado = cifrado.getInstance ("rsa"); cipher.init (cipher.encrypt_mode, privateKey); byte [] resultado = cipher.dofinal (src.getBytes ()); System.out.println ("Cifrado de clave privada, Clave de Clave Pública-Cryption:" + Base64.encodeBase64String (Result)); // 3. Cifrado de clave privada, descifrado de clave pública-descryction-decryption x509CodedKeySpec x509EncodedKeySpec = new X509EncodedKeySpec (rsapublickey.getEncoded ()); keyFactory = keyFactory.getInstance ("RSA"); PublicKey PublicKey = KeyFactory.GeneratePublic (x509EncodedKeySpec); cifrado = cipher.getInstance ("rsa"); cipher.init (cipher.decrypt_mode, public key); resultado = cipher.dofinal (resultado); System.out.println ("Cifrado de clave privada, Decryación de Key Public Key:" + nueva cadena (resultado)); // 4. Cifrado de clave pública, denuncia de descifrado de clave privada x509CodedKeySpec = new X509EncodedKeSpec (rsapublickey.getEncoded ()); keyFactory = keyFactory.getInstance ("RSA"); PublicKey = KeyFactory.GeneratePublic (x509EncodedKeySpec); cifrado = cipher.getInstance ("rsa"); cipher.init (cipher.encrypt_mode, public key); resultado = cipher.dofinal (src.getBytes ()); System.out.println ("Cifrado de clave pública, Decryación de clave privada-cifrado:" + base64.encodeBase64String (resultado)); // 5. Cifrado de la clave pública, Decrycion de clave privada-Decryption-PKCS8EncodedKeySpec = new PKCS8EncodedKeySpec (rsaprivateKey.getEncoded ()); keyFactory = keyFactory.getInstance ("RSA"); privateKey = keyFactory.GeneratePrivate (PKCS8EncodedKeySpec); cifrado = cipher.getInstance ("rsa"); cipher.init (cipher.decrypt_mode, privateKey); resultado = cipher.dofinal (resultado); System.out.println ("Cifrado de clave pública, Decryación de Key Private Key:" + nueva cadena (resultado)); } catch (Exception e) {E.PrintStackTrace (); }}}Cuatro efectos de realización
Clave pública: mfwwdqyjkozihvcnaqebbqadswawsajbajcbeob97idkkirbmx3moy5e4erwh0uvc2bcnly1rdo0lz8ibr1bl1rjxwkhv7u0asa/5dblnngbqrtsjlscpmcaweaq ==
Clave privada: Miibvaibadanbgkqhkig9w0baqefaascat4wgge6ageaakealwf45v3sh2sssksgbhcw5jl7h5hchs68lyfw2vjwsojsvnyjthvuxveldaqe/ttqbi7/ KMGWEECZTBG2WMWWI8WIDAQABAKADSKPRSL+EW3S2N+CEMIZXFYYB0XHS1D84QAPAFPIXKUNVWL0A4OVRWSNWT4MEJATWVTUFNVTXIZCZDX+Q5DBBAI Ea9tzzymgru+3mdlax0icf+niqwvlqyvedka4ksx55gvuciqcdoex6mqgrp78aqjykweogwliszju5fn/lfvkzrcgbjwihamvbblzzzykhy0ikw75kd /LKSYOUTY+20BAP+MIDRQGZAIA6R36EERKZQUTBTCL8LXYPB5F79HTXD5DCVNIB/ZGP0UWIGWTXI7IXHJYCSNOMSJDU1J3DU9KQQUW/EOHXRK/OGUYE = =
Cifrado de clave privada, descifrado de clave pública - Cifrado: VJKFSOVERSVKES5RPRHSJK9TDTZOHDELLS7YLUIDCYEE7DKUCM9SRJ8KWADYNHI4M0OLAFJHK6447HP7IA8X7A ==
Cifrado de clave privada, descifrado de clave pública - Decryto: CAKIN24 Security RSA
Cifrado de clave pública, descifrado de clave privada - Cifrado: gawl73uxhto+efkkpmfmdhtk0vh7hb8n+30l1hp8aamiagd21h2x/q/ns+sogsoxnovunzaSgzenmzzzCjB4Vea ==
Cifrado de clave pública, descifrado de clave privada - Decryto: CAKIN24 Security RSA
Cinco 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.