1. 程式人生 > >java中的祕鑰工廠KeyFactory

java中的祕鑰工廠KeyFactory

一、概述

該類位於java.security包下,宣告:public class KeyFactory extends Object

金鑰工廠用於將金鑰Key 型別的不透明加密金鑰)轉換成金鑰規範(底層金鑰材料的透明表示),反之亦然。

金鑰工廠是雙向的。也就是說,它們允許根據給定的金鑰規範(金鑰材料)構建不透明的金鑰物件,也允許獲取以恰當格式表示的金鑰物件的底層金鑰材料。

對於同一個金鑰可以存在多個相容的金鑰規範。例如,可以使用 DSAPublicKeySpecX509EncodedKeySpec 指定 DSA 公鑰。金鑰工廠可用於相容金鑰規範之間的轉換。

以下是一個如何使用金鑰工廠根據其編碼例項化 DSA 公鑰的示例。假定 Alice 收到了 Bob 的數字簽名。Bob 也向她傳送其公鑰(以編碼的格式)來驗證他的簽名。然後 Alice 執行以下操作:

 X509EncodedKeySpec bobPubKeySpec = new X509EncodedKeySpec(bobEncodedPubKey);
 KeyFactory keyFactory = KeyFactory.getInstance("DSA");
 PublicKey bobPubKey = keyFactory.generatePublic(bobPubKeySpec);
 Signature sig = Signature.getInstance("DSA");
 sig.initVerify(bobPubKey);
 sig.update(data);
 sig.verify(signature);

二、構造方法
protected KeyFactory(KeyFactorySpi keyFacSpi,Provider provider, String algorithm)  建立一個 KeyFactory 物件。
引數:keyFacSpi - 代理 provider - 提供者 algorithm - 與此 KeyFactory 關聯的演算法名稱三、方法詳細1、public static KeyFactorygetInstance(String algorithm) throws NoSuchAlgorithmException 返回轉換指定演算法的 public/private 關鍵字的 KeyFactory 物件

此方法從首選 Provider 開始遍歷已註冊安全提供者列表。返回一個封裝 KeyFactorySpi 實現的新 KeyFactory 物件,該實現取自第一個支援指定演算法的 Provider。

引數:algorithm - 請求金鑰演算法的名稱。返回:新的 KeyFactory 物件。丟擲: - 如果沒有 Provider 支援指定演算法的 KeyFactorySpi 實現。 2、public static KeyFactory getInstance(String algorithm,String provider) throws NoSuchAlgorithmException,NoSuchProviderException 返回轉換指定演算法的 public/private 關鍵字的 KeyFactory 物件。

返回一個封裝 KeyFactorySpi 實現的新 KeyFactory 物件,該實現取自指定提供者。指定提供者必須在安全提供者列表中註冊。

引數:algorithm - 請求金鑰演算法的名稱。有關標準演算法名稱的資訊,請參閱 Java Cryptography Architecture API Specification & Reference 中的附錄 A。provider - 提供者的名稱。 返回:新的 KeyFactory 物件。 丟擲: - 如果不能從指定提供者獲得指定演算法的 KeyFactorySpi 實現。 - 如果指定提供者未在安全提供者列表中註冊。 - 如果提供者的名稱為 null 或空。 3、public static KeyFactorygetInstance(String algorithm,Provider provider) throws NoSuchAlgorithmException返回轉換指定演算法的 public/private 關鍵字的 KeyFactory 物件。

返回一個封裝 KeyFactorySpi 實現的新 KeyFactory 物件,該實現取自指定 Provider 物件。注意,指定 Provider 物件無需在提供者列表中註冊。

4、public final ProvidergetProvider() 返回此金鑰工廠物件的提供者。5、public final StringgetAlgorithm() 獲取與此 KeyFactory 關聯的演算法的名稱。 6、public final PublicKeygeneratePublic(KeySpec keySpec) throws InvalidKeySpecException根據提供的金鑰規範(金鑰材料)生成公鑰物件。 引數:keySpec - 公鑰的規範(金鑰材料)。 返回:公鑰。 丟擲: - 如果給定的金鑰規範不適合此金鑰工廠生成公鑰。 7、public final PrivateKeygeneratePrivate(KeySpec keySpec) throws InvalidKeySpecException 根據提供的金鑰規範(金鑰材料)生成私鑰物件。引數:keySpec - 私鑰的規範(金鑰材料)。 返回:私鑰。 丟擲: - 如果給定的金鑰規範不適合此金鑰工廠生成私鑰。 8、public final <T extends KeySpec> T getKeySpec(Key key,Class<T> keySpec) throws InvalidKeySpecException 返回給定金鑰物件的規範(金鑰材料)。keySpec 標識應接受返回金鑰材料的規範類。例如,它可能是 DSAPublicKeySpec.class,指示金鑰材料應該返回到 DSAPublicKeySpec 類的一個例項中。 引數:key - 金鑰。keySpec - 應接受返回金鑰材料的規範類。 返回:請求規範類例項中的底層金鑰規範(金鑰材料)。 丟擲: - 如果請求的金鑰規範不適合給定金鑰,或無法處理給定金鑰(例如,給定金鑰具有不能識別的演算法或格式)。 9、public final KeytranslateKey(Key key) throws InvalidKeyException 將提供者可能未知或不受信任的金鑰物件轉換成此金鑰工廠對應的金鑰物件。
引數:
key - 提供者未知或不受信任的金鑰物件。
返回:
已轉換的金鑰。
丟擲:

相關推薦

java工廠KeyFactory

一、概述 該類位於java.security包下,宣告:public class KeyFactory extends Object 金鑰工廠用於將金鑰(Key 型別的不透明加密金鑰)轉換成金鑰規範(底層金鑰材料的透明表示),反之亦然。 金鑰工廠是雙向的。也就是說,它們

java介面和工廠設計模式

一.什麼是介面? 介面是一種特殊的抽象類,介面中只有抽象方法和全域性變數,且沒有建構函式。介面的特點有:Java介面中只能包含public,static,final型別的成員變數(預設都是public,static,final型別的,因此在寫的時候可以省略)和public,a

Java的簡單工廠設計模式

package cn.mldn.demo; //設計模式:簡單工廠設計模式 interface Fruit{public void eat(); } class Apple implements Fruit{@Overridepublic void eat() {Syste

工廠模式(think in java的設計模式)

org 我們 import lac otf 返回值 類型 int ava 工廠模式:工廠模式是利用工廠類的工廠方法創建對象的一種設計模式,目的是創建對象,但是很多時候創建對象我們會考慮很多其他因素~~~~比如限定輸入,限定返回值是否某個,比如在創建的過程中進行一些判斷,通過

Java工廠模式

ride 依賴倒轉原則 spa 接口隔離 負責 展開 具體實現 sta 開放 設計模式遵循原則 開閉原則:對擴展開放,對修改關閉 裏氏代換原則:只有當衍生類可以替換掉基類,軟件單位的功能不受到影響時,基類才能真正被覆用。而衍生類也能夠在基類的基礎上增加新的行為 依賴倒轉原

java加密體系-交換演算法DH

金鑰交換演算法(祕鑰協商演算法)——DH 1.簡述     1976年,W.Diffie和M.Hellman在發表的論文中提出了公鑰加密演算法思想,但當時並沒有給出具體的實施方案,原因在於沒有找到單向函式(也就是訊息摘要演算法),但在該論文中給出了通訊

關於linux認證 ,最清晰解讀

所謂"公鑰登入",原理很簡單,就是使用者將自己的公鑰儲存在遠端主機上。登入的時候,遠端主機會向用戶傳送一段隨機字串,使用者用自己的私鑰加密後,再發回來。遠端主機用事先儲存的公鑰進行解密,如果成功,就證明使用者是可信的,直接允許登入shell,不再要求輸入密碼,這和之前的ssh賬號密碼也沒有直接關係。 

java的設計模式之單例模式、工廠模式

Java中的設計模式            轉載地址:https://www.toutiao.com/i6573486403282272775/ 為什麼要學習設計模式 1)設計模式都是一些相對優秀的解決方案,很多問題都是典型的

java工廠模式

工廠模式: 1.隱藏複雜的邏輯過程,只關心結果 分為:簡單工廠,工廠方法,抽象工廠 簡單工廠: 1.產品介面: package com.gupaoedu.vip.factory; //產品介面 //汽車需要滿足一定的標準 public interface Car

Java使用OpenSSL生成的RSA公私對資料進行加解密

Java基於OpenSSL的公私鑰對資料進行加解密 使用OpenSSL來生成私鑰和公鑰 RSA加密解密工具類 簽名及校驗類 測試類 使用OpenSSL來生成私鑰和公鑰

Java的單例模式、工廠模式、介面回撥、異常

for迴圈:起點為基本資料型別,包括boolean . equals():重寫原因,希望在地址不同但內容相同時也能返回true。 匿名物件:直接new出物件,不需要物件名來接收。 new Person().show(); 內部類:類

Java工廠設計模式

  Java中的工廠設計模式   歡迎到工廠設計模式在Java教程。Factory Pattern是Creational Design模式之一,它在JDK以及Spring和Struts等框架中得到廣泛應用。 目錄[ 隱藏 ] 1工廠設

java生成AES

import java.security.NoSuchAlgorithmException; import java.security.SecureRandom; import javax.crypto.KeyGenerator; import javax.crypto.

在VMware克隆虛擬機器,Xshell遠端連線克隆虛擬機器及認證

一,在VMware中克隆虛擬機器 注 : 在虛擬機器關機的狀態下,才能建立虛擬機器。 1. 克隆你要克隆的環境 其實就是開啟 VMare 後,關閉或掛起你要克隆的機器,然後右鍵選擇【管理】-【克隆】: 剩下的都是 Next 、 Next

設計模式(二)--- java工廠模式

工廠模式 簡單工廠模式是屬於建立型模式,又叫做靜態工廠方法(Static Factory Method)模式,但不屬於23種GOF設計模式之一。簡單工廠模式是由一個工廠物件決定創建出哪一種產品類的例項。簡單工廠模式是工廠模式家族中最簡單實用的模式,可以理解為是不同工廠模式的一個特殊實現。

Java常見的設計模式---簡單工廠模式、工廠方法模式和單例模式

在講設計模式之前,我們首先來說一下面向物件思想的設計原則,在實際的開發中,我們要想更深入的瞭解面向物件思想,就必須熟悉前人總結過的面向物件的思想的設計原則:1.單一職責原則:“高內聚,低耦合”,也就是說,每個類應該只有一個職責,對外只能提供一種功能,而引起類變化的原因應該只有

關於JAVARSA加簽解籤,私加密公解密和公加密私解密程式碼詳解

在專案中遇到的問題百度了許久總結出來的 私鑰加密公鑰解密和公鑰加密私鑰解密。 一般為了安全採用的是私鑰加密,公鑰解密(公鑰可以用Base64轉換後公開) package com.paic.ebank.creditcard.common.util; import java.s

Java解析證書檔案的公(public key)

數字證書的格式遵循X.509標準。X.509是由國際電信聯盟(ITU-T)制定的數字證書標準。證書擴充套件檔名 .cer, .crt - 通常被用於二進位制的DER檔案格式 (同於.der), 不過也被用於Base64編碼的檔案 (例如 .pem).    .P7B - 同於 .p7c   .P7C - P

Java反射機制在工廠模式的應用

在本篇文章中就不詳細介紹工廠模式,主要介紹一下反射在工廠模式中的使用,讓讀者對反射機制帶來的好處有更深的認識。 首先看一下簡單工廠模式 簡單工廠模式(simple factory)是類的建立模式,又叫靜態工廠方法(static factory method)模式。 簡單工廠

java代理設計模式與工廠類設計模式的綜合應用

package cn.mdln.study2; public class TestDemo11 { /**  * 主方法是客戶端,只關心取得通過工廠類取得例項化物件,不關係到底工廠類如何取得,  * 更不會關係主題類是如何例項化介面的,才不會關中間有經歷過那寫不為人知的操作