Cet article décrit l'algorithme de cryptage et de décryptage RSA mis en œuvre dans Java. Partagez-le pour votre référence, comme suit:
import java.awt.alphacomposite; import java.awt.color; import java.awt.font; import java.awt.graphics2d; import java.awt.image; import java.awt.rederinghints; java.io.fileInputStream; import java.io.fileoutputStream; import java.io.objectInputStream; import java.io.objectoutputStream; import java.security.key java.security.interfaces.rsaprivateKey; import java.security.interfaces.rsapublickey; import javax.crypto.cipher; public classe rsautils {public static string MakeKeyfile (String pubkeyfile, string prikeyfile) {String result = "Création de fichiers de clés publics et privés"; Essayez {// KeyPairGenerator est utilisé pour générer des paires de clés publiques et privées, et l'objet est généré en fonction de l'algorithme RSA. KeyPAirGenerator Gen = KeyPAirGenerator.getInstance ("RSA"); // Initialise le générateur de paire de clés, la taille de la clé est de 1024 bits Gen.Initialize (1024); // // Générer un nombre aléatoire fort // SecureRandom Random = new SecureRandom (); // Gen.Initialize (1024, aléatoire); // Générez une paire de clés et enregistrez-le dans la paire paire paire de clés = gen.generateKeyPair (); // Obtenez la clé privée RSAPRivateKey prikey = (rsaprivatekey) pair.getPrivate (); // Obtenez la clé publique rsapublickey pubkey = (rsapublickey) paire.getPublic (); // Générer un fichier de clé privée ObjectOutputStream OS = new ObjectOutputStream (new FileOutputStream (prikeyfile)); OS.WriteObject (Prikey); os.flush (); os.close (); // Générer un fichier de clé publique OS = new ObjectOutputStream (new FileOutputStream (pubKeyFile)); OS.WriteObject (pubkey); os.flush (); os.close (); result = "générer un fichier de clé publique [" + pubkeyfile + "] générer un fichier de clé privé [" + prikeyfile + "]"; } catch (exception e) {e.printStackTrace (); } Retour Résultat; } public static void main (string [] args) {try {String pubfile = "f: /images/pub.key"; Licence de chaîne = "f: /images/pri.key"; Résultat de chaîne = null; // result = MakeKeyFile (PubFile, Licence); Résultat = Markpupra (PubFile, Licence); System.out.println (résultat); } catch (exception e) {e.printStackTrace (); }} public static String markpupra (String PubFile, String License) {String results = "Erreur de cryptage s'est produit"; try {objectInputStream os = new ObjectInputStream (new FileInputStream (PubFile)); Rsapublickey pubkey = (rsapublickey) os.readObject (); os.close (); OS = new ObjectInputStream (new FileInputStream (prifile)); RsaprivateKey prikey = (rsaprivateKey) os.readObject (); os.close (); String utf = "utf-8"; String msg = "## China% of% People @ + _"; // Utilisez la clé publique pour chiffrer la clé privée pour décrypter System.out.println ("Texte d'origine:" + msg); octet [] PUK = mandepredata (pubkey, msg.getbytes (UTF), 1); System.out.println ("Données de fichiers chiffrées:" + Nouvelle chaîne (PUK, UTF)); octet [] dpuk = mandepredata (prikey, puk, 0); System.out.println ("Données de fichiers décryptées:" + Nouvelle chaîne (DPUK, UTF)); msg = "jd # notre ¥ + = # new"; // Utilisez une clé privée pour chiffrer la clé publique pour décrypter System.out.println ("Texte d'origine:" + msg); BYTE [] PRK = mandepredata (prikey, msg.getBytes (UTF), 1); System.out.println ("Données de fichiers chiffrées:" + Nouvelle chaîne (PRK, UTF)); octet [] dprk = mandepredata (pubkey, prk, 0); System.out.println ("Données de fichiers décryptées:" + Nouvelle chaîne (DPRK, UTF)); résultats = "cryptage et décryptage terminé"; } catch (exception e) {e.printStackTrace (); } RETOUR RÉSULTATS; } / ** * * @param k * @param data * @param Encrypt 1 Encryption 0 Decryption * @return * @throws exception * / public static byte [] maniedata (key key, byte [] data, int type) lance exception {if (key! = null) {cipher ci = Cipher.getinstance ("rsa"); if (type == 1) {ci.init (cipher.encrypt_mode, key); octet [] res = ci.dofinal (données); return res; } if (type == 0) {ci.init (cipher.decrypt_mode, key); octet [] res = ci.dofinal (données); return res; }} return null; }}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:
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.