13 Aralık 2017 Çarşamba

PKCS8EncodedKeySpec Sınıfı

Giriş
Bu sınıf PKCS 8 private key formatından PrivateKey nesnesine geçiş için kullanılır. PKCS 8 formatı RSA tarafından geliştirilmştir.

Şöyle yaparız.
byte[] keyBytes = Files.readAllBytes(new File(filename).toPath());
PKCS8EncodedKeySpec spec = new PKCS8EncodedKeySpec(keyBytes);
KeyFactory kf = KeyFactory.getInstance("RSA");
PrivateKey pk = kf.generatePrivate(spec);
constructor
Örnek
Şöyle yaparız. Dosya encode edilmemiş PKCS 8 bilgisi içerir.
byte[] keyBytes = Files.readAllBytes(new File(filename).toPath());
PKCS8EncodedKeySpec spec = new PKCS8EncodedKeySpec(keyBytes);
Örnek
Eğer dosya PEM olarak encode edilmiş ise şöyle yaparız. PEM'in başındaki string atılır, Base64 veri binary hale çevrilir ve kullanılır.
public  PrivateKey getPemPrivateKey(String filename, String algorithm) throws Exception {
  File f = new File(filename);
  FileInputStream fis = new FileInputStream(f);
  DataInputStream dis = new DataInputStream(fis);
  byte[] keyBytes = new byte[(int) f.length()];
  dis.readFully(keyBytes);
  dis.close();

  String temp = new String(keyBytes);
  String privKeyPEM = temp.replace("-----BEGIN PRIVATE KEY-----\n", "");
  privKeyPEM = privKeyPEM.replace("-----END PRIVATE KEY-----", "");
  

  Base64 b64 = new Base64();
  byte [] decoded = b64.decode(privKeyPEM);

  PKCS8EncodedKeySpec spec = new PKCS8EncodedKeySpec(decoded);
  KeyFactory kf = KeyFactory.getInstance(algorithm);
  return kf.generatePrivate(spec);
}

Hiç yorum yok:

Yorum Gönder