Криптография Java - шифрование данных
Вы можете зашифровать данные, используя класс 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 class принимает переменную 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"));
}
}
Вывод
Вышеупомянутая программа генерирует следующий вывод -
Encrypted Text:
"???:]J_?]???;Xl??????*@??u???r??=T&???_?_??.??i?????(?$_f?zD??????ZGH??g???
g?E:_??bz^??f?~o???t?}??u=uzp\UI????Z??l[?G?3??Y?UAEfKT?f?O??N_?d__?????a_?15%?^?
'p?_?$,9"{??^??y??_?t???,?W?PCW??~??[?$??????e????f?Y-Zi__??_??w?_?&QT??`?`~?[?K_??_???