Cet article décrit la méthode d'implémentation de l'algorithme RSA dans Java. Partagez-le pour votre référence, comme suit:
Une introduction
Le seul largement accepté et mis en œuvre pour le chiffrement des données et le cryptage de clé publique de signature numérique, cryptage de clés privées
Deux description du paramètre RSA
Trois réalisations
Package com.imooc.security.rsa; import java.security.keyfactory; import java.security.keypair; import java.security.keypairgenerator; import java.security.privatekey; import java.security.publickey; import java.security.interfaces.rsaprivatekey; java.security.interfaces.rsapublickey; import java.security.spe.pkcs8encodedkeypec; import java.security.spec.x509encodedkeyspec; import javax.crypto.cipher; import org.apache.commons.codec.binary.base64; Classé public Ioocrsa {private static static static static static static STOCKEC.Base64; Classé public Ioocrsa {private STACK src = "Cakin24 Security RSA"; public static void main (String [] args) {jdkrsa (); } public static void jdkrsa () {try {// 1. Key keypAirGenerator keyPainerator = keypairgenerator.getInstance ("RSA"); KeyPairGenerator.Initialize (512); Keypair keypair = keypairgenerator.generateKeypair (); Rsapublickey rsapublickey = (rsapublickey) keypair.getPublic (); RsaprivateKey rsaprivateKey = (rsaprivateKey) keypair.getPrivate (); System.out.println ("Clé publique:" + Base64.EncodeBase64String (rsapublickey.getEncoded ())); System.out.println ("Clé privée:" + Base64.EncodeBase64String (rsaprivateKey.getEncoded ())); // 2. Cryptage de clé privée, décryptage de clé publique - entravage pkcs8encodedKeyspec pkcs8encodedKeyspec = new pkcs8encodedKeyspec (rsaprivateKey.getencoded ()); KeyFactory keyFactory = keyFactory.getInstance ("RSA"); PrivateKey privateKey = keyfactory.generatePrivate (pkcs8encodedKeyspec); Cipher Cipher = Cipher.getInstance ("RSA"); cipher.init (cipher.encrypt_mode, privateKey); BYTE [] result = cipher.dofinal (src.getBytes ()); System.out.println ("Encryption de clé privée, Décryption de clé publique:" + base64.EncodeBase64String (résultat)); // 3. Cryptage à clé privée, Decryption de clés public-décring-décring x509encodedKeyspec X509EncodedKeyspec = new x509encodedKeyspec (rsapublickey.getencoded ()); keyFactory = keyFactory.getInstance ("RSA"); PublicKey publicKey = keyFactory.GenateRedPublic (x509encodedKeyspec); cipher = cipher.getInstance ("RSA"); cipher.init (cipher.decrypt_mode, publicKey); résultat = cipher.dofinal (résultat); System.out.println ("Encryption de clé privée, décryptage de clés publique-décryptage:" + Nouvelle chaîne (résultat)); // 4. Cryptage des clés publics, Décryptage de clé privée-Encryption X509EncodedKeyspec = new x509EncodedKeyspec (rsapublicKey.getEncoded ()); keyFactory = keyFactory.getInstance ("RSA"); publicKey = KeyFactory.GenateRedPublic (x509EncodedKeyspec); cipher = cipher.getInstance ("RSA"); Cipher.init (cipher.encrypt_mode, publicKey); résultat = cipher.dofinal (src.getBytes ()); System.out.println ("Encryption de clé publique, Décryption de clé privée:" + base64.EncodeBase64String (résultat)); // 5. Cryptage des clés publics, décryptage de clés privés-décryption-PKCS8EncodedKeyspec = new PKCS8EncodedKeyspec (rsaprivateKey.getEncoded ()); keyFactory = keyFactory.getInstance ("RSA"); privateKey = keyFactory.GenateRedPrivate (pkcs8EncodedKeyspec); cipher = cipher.getInstance ("RSA"); cipher.init (cipher.decrypt_mode, privateKey); résultat = cipher.dofinal (résultat); System.out.println ("Encryption de clé publique, décryptage de clés privés-décryptage:" + Nouvelle chaîne (résultat)); } catch (exception e) {e.printStackTrace (); }}}Quatre effets de réalisation
Clé publique: mfwwdqyjkozihvcnaqebbqadswawsajbajcbeob97idkirbmx3moy5e4erwh0uvc2bcnly1rdo0lz8ibr1bl1rjxwkhv7u0aso / 5dblnngbqrtsjlScpmcaWeaQ ==
Clé privée: Miibvaibadanbgkqhkig9w0baqefaascat4wgge6ageaakealwf45v3sh2SSKSGBHCW5Jl7H5HCHS68LYFW2VJWSOJSVnYJTHVUXVELDAQE / TTQBI7 / kmgweecztbg2wmwwi8widaqabakadskprsl + ew3s2n + cemizxfyyb0xhs1d84qapafpixkunvwl0a4ovrwsnwt4mejatwvtufnvtxizczdx + q5dbbai EA9TZZYMGRU + 3MDLAX0ICF + NIQWVLQYVEDKA4KSX55GVUCIQCDOEX6MQGRP78AQJYKWEOGWLISZJU5FN / LFVKZRCGBJWIHAMVBBLZZAYKHY0IKW75KD / lksyouty + 20bap + midrqgzaia6r36eerkzqubtcl8lxypb5f79htxd5dcvnib / zgp0uwigwtxi7ixhjycsnomsjdu1j3du9kqquw / eohxrk / oguye =
Cryptage à clé privée, Décryptage public de clé - Encryption: VjkfSoivelvkes5rprhsjk9tdtzoHDells7yLUIDCYEE7DKUCM9SRJ8KWADYNHI4M0OLAFJHK6447HP7IA8X7A ==
Cryptage à clé privée, Décryptage public de clé public - Décription: CAKIN24 Sécurité RSA
Encryption de clé publique, Décryptage de clé privée - Encryption: GAWL73UXHTO + EFKKPMFMDHTK0VH7HB8N + 30L1HP8AAMIAGD21H2X / Q / NS + SOGSOXNOVUNZASGZENMZZCJB4VEA ==
Cryptage des clés publics, décryptage des clés privés - Décription: CAKIN24 Sécurité RSA
Cinq 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.