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