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 클래스는 필요한 변환을 나타내는 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_??_???