В этой статье описывается алгоритм шифрования и дешифрования RSA, реализованный в Java. Поделитесь этим для вашей ссылки, следующим образом:
Импорт java.awt.alphacomposite; import java.awt.color; import java.awt.font; import java.awt.graphics2d; импорт java.awt.image; импорт java.awt.renderinghints; импорт java.awt.image.bufferemage; импорт java.io.file; java.io.fileinputstream; import java.io.fileoutputstream; импорт java.io.objectinputstream; import java.io.objectOutputStream; импорт java.security.key; импорт java.security. java.security.interfaces.rsaprivatekey; import java.security.interfaces.rsapublickey; import javax.crypto.cipher; открытый класс rsautils {public static String Makekeifile (String pubkeyfile, Stringyfile) {String Result = «Создание публичного и личного ключевого файла Fall»; try {// ceypairgenerator используется для генерации публичных и частных пар клавиш, и объект генерируется на основе алгоритма RSA. KeyPairgenerator Gen = KeyPairGenerator.GetInstance ("RSA"); // Инициализировать генератор пар клавиш, размер ключа составляет 1024 бит Gen.Itialize (1024); // // генерировать сильное случайное число // securerandom random = new securerandom (); // gen.initialize (1024, случайный); // генерировать пару ключей и сохранить ее в паре пары клавиш = Gen.GenerateKeyPair (); // Получить частный ключ rsaprivatekey prikey = (rsaprivatekey) pare.getPrivate (); // Получить открытый ключ RSapublickey pubkey = (rsapublickey) pair.getPublic (); // Сгенерировать файл частного ключа objectOutputStream OS = new ObjectOutputStream (new FileOutputStream (PrikeyFile)); OS.WriteObject (Prikey); os.flush (); os.close (); // генерировать общедоступный файл ключей OS = new ObjectOutputStream (new FileOutputStream (PubKeyFile)); OS.WriteObject (PubKey); os.flush (); os.close (); result = "Сгенерировать файл открытого ключа ["+pubkeyfile+"] генерировать файл частного ключа ["+prikeyfile+"]"; } catch (Exception e) {e.printstackTrace (); } return Result; } public static void main (string [] args) {try {String pubfile = "f:/images/pub.key"; String License = "f:/images/pri.key"; String result = null; // result = MakeKeyFile (PubFile, лицензия); Результат = Markpupra (PubFile, лицензия); System.out.println (результат); } catch (Exception e) {e.printstackTrace (); }} public Static String Markpupra (String pubfile, String License) {String Results = "произошла ошибка шифрования"; 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 = "## Китай % от % людей @+_"; // Использовать открытый ключ для шифрования закрытого ключа для расшифровки system.out.println («Исходный текст:» + msg); byte [] puk = handledata (pubkey, msg.getbytes (utf), 1); System.out.println ("Зашифрованные данные файла:" + new String (Puk, UTF)); byte [] dpuk = handledata (prikey, puk, 0); System.out.println ("Decrypted File Data:" + New String (dpuk, UTF)); msg = "jd#наш ¥+=#new"; // Использовать закрытый ключ, чтобы зашифровать открытый ключ для расшифровки System.out.println («Оригинальный текст:» + MSG); byte [] prk = handledata (prikey, msg.getbytes (utf), 1); System.out.println ("Зашифрованные данные файла:" + new String (prk, utf)); byte [] dprk = handledata (pubkey, prk, 0); System.out.println ("расшифрованные данные файла:" + new String (DPRK, UTF)); Результаты = "Шифрование и дешифрование завершены"; } catch (Exception e) {e.printstackTrace (); } вернуть результаты; } / ** * * * @param k * @param data * @param incrypt 1 шифрование 0 Дешифрование * @return * @throws exception * / public static byte [] handledata (ключ ключ, byte [] data, int type) бросает исключение {if (key! = null) {cipher ci = cipher.getinstans if (type == 1) {ci.init (cipher.encrypt_mode, key); byte [] res = ci.dofinal (data); вернуть Res; } if (type == 0) {ci.init (cipher.decrypt_mode, key); byte [] res = ci.dofinal (data); вернуть Res; }} return null; }}PS: друзья, которые заинтересованы в шифровании и дешифровании, также могут относиться к онлайн -инструментам этого сайта:
Текст инструментов для шифрования и дешифрования в Интернете (включая AES, DES, RC4 и т. Д.):
http://tools.vevb.com/password/txt_encode
Инструмент онлайн -шифрования MD5:
http://tools.vevb.com/password/createmd5password
Инструмент по шифрованию хэша/хэш -хэш -хэша:
http://tools.vevb.com/password/hash_encrypt
Онлайн MD5/HASH/SHA-1/SHA-2/SHA-256/SHA-512/SHA-3/RIPEMD-160 Инструмент шифрования:
http://tools.vevb.com/password/hash_md5_sha
Онлайн SHA1/SHA224/SHA256/SHA384/SHA512 Инструмент шифрования:
http://tools.vevb.com/password/sha_encode
Для получения дополнительной информации о контенте, связанном с Java, пожалуйста, ознакомьтесь с темами этого сайта: «Сводка навыков математической операции Java», «Учебное пособие по структурам данных и алгоритмам Java», «Сводка символов Java и навыки операции по обращению», «Сводка операции Java Operation Dom Node» и «Сводка операции Java Cache», «Сводка операции Java Dom Node» и «Сютовая операция Java Cache», «Сводка
Я надеюсь, что эта статья будет полезна для всех Java Programming.