Java Şifreleme - Verileri Şifreleme

Verilen verileri, Cipher sınıfını kullanarak şifreleyebilirsiniz. javax.cryptopaketi. Java kullanarak verilen verileri şifrelemek için aşağıdaki adımları izleyin.

Adım 1: Bir KeyPairGenerator nesnesi oluşturun

KeyPairGenerator sınıf sağlar getInstance() gerekli anahtar oluşturma algoritmasını temsil eden bir String değişkenini kabul eden ve anahtarları oluşturan bir KeyPairGenerator nesnesi döndüren yöntem.

Oluşturmak KeyPairGenerator kullanarak nesne getInstance() yöntemi aşağıda gösterildiği gibi.

//Creating KeyPair generator object
KeyPairGenerator keyPairGen = KeyPairGenerator.getInstance("DSA");

Adım 2: KeyPairGenerator nesnesini başlatın

KeyPairGenerator sınıf adlı bir yöntem sağlar initialize()bu yöntem, anahtar çifti üretecini başlatmak için kullanılır. Bu yöntem, anahtar boyutunu temsil eden bir tamsayı değerini kabul eder.

Önceki adımda oluşturulan KeyPairGenerator nesnesini initialize() yöntemi aşağıda gösterildiği gibi.

//Initializing the KeyPairGenerator
keyPairGen.initialize(2048);

3. Adım: KeyPairGenerator'ü oluşturun

Sen üretebilirsin KeyPair kullanmak generateKeyPair() yöntemi KeyPairGeneratorsınıf. Aşağıda gösterildiği gibi bu yöntemi kullanarak anahtar çiftini oluşturun.

//Generate the pair of keys
KeyPair pair = keyPairGen.generateKeyPair();

4. Adım: Genel anahtarı alın

Genel anahtarı oluşturulan KeyPair kullanarak nesne getPublic() yöntemi aşağıda gösterildiği gibi.

Aşağıda gösterildiği gibi bu yöntemi kullanarak genel anahtarı alın.

//Getting the public key from the key pair
PublicKey publicKey = pair.getPublic();

Adım 5: Bir Cipher nesnesi oluşturun

getInstance() yöntemi Cipher class, gerekli dönüşümü temsil eden bir String değişkenini kabul eder ve verilen dönüşümü uygulayan bir Cipher nesnesi döndürür.

Cipher nesnesini oluşturun. getInstance() yöntemi aşağıda gösterildiği gibi.

//Creating a Cipher object
Cipher cipher = Cipher.getInstance("RSA/ECB/PKCS1Padding");

Adım 6: Cipher nesnesini başlatın

init() yöntemi Cipher sınıfı, iki parametreyi, işlem modunu (şifreleme / şifre çözme) temsil eden bir tam sayı parametresi ve genel anahtarı temsil eden bir Anahtar nesnesi kabul eder.

Cypher nesnesini, init() yöntemi aşağıda gösterildiği gibi.

//Initializing a Cipher object
cipher.init(Cipher.ENCRYPT_MODE, publicKey);

7. Adım: Cipher nesnesine veri ekleyin

update() Cipher sınıfının yöntemi, şifrelenecek verileri temsil eden bir bayt dizisini kabul eder ve mevcut nesneyi verilen verilerle günceller.

Verileri, başlatılan Cipher nesnesini update() yöntemi aşağıda gösterildiği gibi bayt dizisi biçiminde.

//Adding data to the cipher
byte[] input = "Welcome to Tutorialspoint".getBytes();	  
cipher.update(input);

8. Adım: Verileri şifreleyin

doFinal()Cipher sınıfının yöntemi şifreleme işlemini tamamlar. Bu nedenle, aşağıda gösterildiği gibi bu yöntemi kullanarak şifrelemeyi bitirin.

//Encrypting the data
byte[] cipherText = cipher.doFinal();

Misal

Aşağıdaki Java programı kullanıcıdan gelen metni kabul eder, RSA algoritmasını kullanarak şifreler ve verilen metnin şifreli formatını yazdırır.

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"));
   }
}

Çıktı

Yukarıdaki program aşağıdaki çıktıyı üretir -

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_??_???