Java Şifreleme - Bir MAC Oluşturma
MAC (Mesaj Akimlik doğrulama Code) algoritması, mesaj kimlik doğrulamasını sağlamak için simetrik bir anahtar şifreleme tekniğidir. MAC sürecini oluşturmak için, gönderen ve alıcı simetrik bir K anahtarını paylaşır.
Esasen, MAC, mesaj kimlik doğrulamasını sağlamak için bir mesajla birlikte gönderilen temel mesaj üzerinde oluşturulan şifreli bir sağlama toplamıdır.
Kimlik doğrulama için MAC kullanma süreci aşağıdaki şekilde gösterilmektedir -
Java'da Mac sınıfı javax.cryptopaketi, mesaj kimlik doğrulama kodunun işlevselliğini sağlar. Bu sınıfı kullanarak mesaj kimlik doğrulama kodu oluşturmak için aşağıda verilen adımları izleyin.
Adım 1: Bir KeyGenerator nesnesi oluşturun
KeyGenerator sınıf sağlar getInstance() gerekli anahtar oluşturma algoritmasını temsil eden bir String değişkenini kabul eden ve bir KeyGenerator gizli anahtarlar oluşturan nesne.
Oluşturmak KeyGenerator kullanarak nesne getInstance() yöntemi aşağıda gösterildiği gibi.
//Creating a KeyGenerator object
KeyGenerator keyGen = KeyGenerator.getInstance("DES");
Adım 2: SecureRandom nesnesi oluşturun
SecureRandom sınıfı java.Securitypaketi, Java'da rasgele sayılar üretmek için kullanılan güçlü bir rasgele sayı üreteci sağlar. Bu sınıfı aşağıda gösterildiği gibi örnekleyin.
//Creating a SecureRandom object
SecureRandom secRandom = new SecureRandom();
3. Adım: KeyGenerator'ü başlatın
KeyGenerator sınıf adlı bir yöntem sağlar init() bu yöntem kabul eder SecureRandom nesneyi ve akımı başlatır KeyGenerator.
Bu yöntemi kullanarak önceki adımda oluşturulan KeyGenerator nesnesini başlatın.
//Initializing the KeyGenerator
keyGen.init(secRandom);
4. Adım: Anahtar oluşturun
Kullanarak anahtar oluştur generateKey() yöntemi KeyGenerator aşağıda gösterildiği gibi sınıf.
//Creating/Generating a key
Key key = keyGen.generateKey();
Adım 5: Mac nesnesini başlatın
init() Mac sınıfının yöntemi bir Key nesnesini kabul eder ve verilen anahtarı kullanarak geçerli Mac nesnesini başlatır.
//Initializing the Mac object
mac.init(key);
Adım 6: Mac işlemini tamamlayın
doFinal()Mac sınıfının yöntemi, Mac işlemini bitirmek için kullanılır. Gerekli verileri bayt dizisi biçiminde bu yönteme iletin ve aşağıda gösterildiği gibi işlemi tamamlayın.
//Computing the Mac
String msg = new String("Hi how are you");
byte[] bytes = msg.getBytes();
byte[] macResult = mac.doFinal(bytes);
Misal
Aşağıdaki örnek, JCA kullanılarak İleti Kimlik Doğrulama Kodunun (MAC) oluşturulmasını gösterir. Burada, basit bir "Merhaba nasılsın" mesajı alıyoruz ve bu mesaj için bir Mac oluşturuyoruz.
import java.security.Key;
import java.security.SecureRandom;
import javax.crypto.KeyGenerator;
import javax.crypto.Mac;
public class MacSample {
public static void main(String args[]) throws Exception{
//Creating a KeyGenerator object
KeyGenerator keyGen = KeyGenerator.getInstance("DES");
//Creating a SecureRandom object
SecureRandom secRandom = new SecureRandom();
//Initializing the KeyGenerator
keyGen.init(secRandom);
//Creating/Generating a key
Key key = keyGen.generateKey();
//Creating a Mac object
Mac mac = Mac.getInstance("HmacSHA256");
//Initializing the Mac object
mac.init(key);
//Computing the Mac
String msg = new String("Hi how are you");
byte[] bytes = msg.getBytes();
byte[] macResult = mac.doFinal(bytes);
System.out.println("Mac result:");
System.out.println(new String(macResult));
}
}
Çıktı
Yukarıdaki program aşağıdaki çıktıyı üretecektir -
Mac result:
HÖ„^ǃÎ_Utbh…?š_üzØSSÜh_ž_œa0ŽV?