Вы можете зашифровать данные с помощью класса Cipher пакета javax.crypto . Следуйте приведенным ниже инструкциям, чтобы зашифровать данные с помощью Java.
Шаг 1. Создайте объект KeyPairGenerator.
Класс KeyPairGenerator предоставляет метод getInstance (), который принимает переменную String, представляющую требуемый алгоритм генерации ключей, и возвращает объект KeyPairGenerator, который генерирует ключи.
Создайте объект KeyPairGenerator, используя метод getInstance (), как показано ниже.
//Creating KeyPair generator object KeyPairGenerator keyPairGen = KeyPairGenerator.getInstance("DSA");
Шаг 2. Инициализация объекта KeyPairGenerator.
Класс KeyPairGenerator предоставляет метод с именем initialize (), который используется для инициализации генератора пар ключей. Этот метод принимает целочисленное значение, представляющее размер ключа.
Инициализируйте объект KeyPairGenerator, созданный на предыдущем шаге, используя метод initialize (), как показано ниже.
//Initializing the KeyPairGenerator keyPairGen.initialize(2048);
Шаг 3: Сгенерируйте KeyPairGenerator
Вы можете сгенерировать KeyPair, используя метод generateKeyPair () класса KeyPairGenerator . Сгенерируйте пару ключей, используя этот метод, как показано ниже.
//Generate the pair of keys KeyPair pair = keyPairGen.generateKeyPair();
Шаг 4: Получить открытый ключ
Вы можете получить открытый ключ из сгенерированного объекта KeyPair, используя метод getPublic (), как показано ниже.
Получить открытый ключ, используя этот метод, как показано ниже.
//Getting the public key from the key pair PublicKey publicKey = pair.getPublic();
Шаг 5: Создайте объект Cipher
Метод getInstance () класса Cipher принимает переменную String, представляющую требуемое преобразование, и возвращает объект Cipher, который реализует данное преобразование.
Создайте объект Cipher, используя метод getInstance (), как показано ниже.
//Creating a Cipher object Cipher cipher = Cipher.getInstance("RSA/ECB/PKCS1Padding");
Шаг 6: Инициализировать объект Cipher
Метод init () класса Cipher принимает два параметра: целочисленный параметр, представляющий режим работы (шифрование / дешифрование), и объект Key, представляющий открытый ключ.
Инициализируйте объект Cypher, используя метод init (), как показано ниже.
//Initializing a Cipher object cipher.init(Cipher.ENCRYPT_MODE, publicKey);
Шаг 7: Добавить данные в объект Cipher
Метод update () класса Cipher принимает массив байтов, представляющий данные, которые должны быть зашифрованы, и обновляет текущий объект данными.
Обновите инициализированный объект Cipher, передав данные методу update () в виде байтового массива, как показано ниже.
//Adding data to the cipher byte[] input = "Welcome to Tutorialspoint".getBytes(); cipher.update(input);
Шаг 8: Шифровать данные
Метод doFinal () класса Cipher завершает операцию шифрования. Поэтому завершите шифрование, используя этот метод, как показано ниже.
//Encrypting the data byte[] cipherText = cipher.doFinal();
пример
Следующая Java-программа принимает текст от пользователя, шифрует его с помощью алгоритма RSA и печатает зашифрованный формат данного текста.
import java.security.KeyPair; import java.security.KeyPairGenerator; import java.security.Signature; import javax.crypto.BadPaddingException; import javax.crypto.Cipher; public class CipherSample { public static void main(String args[]) throws Exception{ //Creating a Signature object Signature sign = Signature.getInstance("SHA256withRSA"); //Creating KeyPair generator object KeyPairGenerator keyPairGen = KeyPairGenerator.getInstance("RSA"); //Initializing the key pair generator keyPairGen.initialize(2048); //Generating the pair of keys KeyPair pair = keyPairGen.generateKeyPair(); //Creating a Cipher object Cipher cipher = Cipher.getInstance("RSA/ECB/PKCS1Padding"); //Initializing a Cipher object cipher.init(Cipher.ENCRYPT_MODE, pair.getPublic()); //Adding data to the cipher byte[] input = "Welcome to Tutorialspoint".getBytes(); cipher.update(input); //encrypting the data byte[] cipherText = cipher.doFinal(); System.out.println(new String(cipherText, "UTF8")); } }
Выход
Вышеуказанная программа генерирует следующий вывод —