28 Şubat 2018 Çarşamba

SecretKeySpec Sınıfı

Giriş
Şu satırı dahil ederiz.
import javax.crypto.spec.SecretKeySpec;
Bu sınıf hem KeySpec hem de Key arayüzlerini gerçekleştirir.

Bu sınıf sadece algoritmayı bilir. Algoritmanın modları ve padding'i hakkında bilgisi yoktur. Algoritmanın modu ve padding'i Cipher sınıfını ilgilendirir.

Yani bu sınıf aslında sadece Ciper.init() Mac.init() gibi metodlara daha kolay parametre geçmek içindir.

Bazı kodlarda KeyGenerator ile key ürettiriliyor. Bu kullanım tarzını hiç anlamadım.

KeySpec Arayüzü 
KeySpec arayüzü Cipher ilklendirmek için değil key hakkında metadata vermek içindir.

Key Arayüzü
SecretKey arayüzünden kalıtır. SecretKey ise Key arayüzünden kalıtır. Key nesneleri Cipher nesnesini ilklendirmek için gerekir. Açıklaması şöyle
This class specifies a secret key in a provider-independent fashion.
It can be used to construct a SecretKey from a byte array, without having to go through a (provider-based) SecretKeyFactory.
Bu sınıf Cipher nesnesini ilklendirmek için kullanılır. Şöyle yaparız.
Key key = new SecretKeySpec(..., "...");
Cipher encryptCipher = Cipher.getInstance("...");
encryptCipher.init (Cipher.ENCRYPT_MODE, key);
Bu sınıfı direkt kullanmak veya SecretKeyFactory ile yaratmak arasında güvenlik açısından fark olup olmadığını bilmiyorum.

constructor - byte [] + Algoritma
Örnek
Şöyle yaparız.
String strDefaultKey = "...";
byte [] bytes = strDefaultKey.getBytes ("UTF-8");
SecretKeySpec keySpec = new SecretKeySpec (bytes, "AES");
Örnek
Şöyle yaparız.
String strDefaultKey = "...";
byte [] bytes = strDefaultKey.getBytes ("UTF-8");
Key keySpec = new SecretKeySpec (bytes, "DES");
Örnek
Şöyle yaparız.
String HMAC_SHA1_ALGORITHM = "HmacSHA1";

String key = ...;

SecretKeySpec keySpec = new SecretKeySpec(key.getBytes(), HMAC_SHA1_ALGORITHM);

Hiç yorum yok:

Yorum Gönder