簡體   English   中英

證書與私鑰匹配

[英]Certificate match to private key

我們目前正在用Java實現數字簽名小程序。 用戶將擁有包含私鑰及其各自的證書的密鑰庫的令牌。 證書和私鑰將具有不同的別名。

我需要做的是將商店中的私鑰調用/匹配到用戶在簽名時選擇的證書。 如何在Java中將私鑰與其各自的證書進行匹配? 我需要類似getkey(alias,password)這樣的東西,其中別名是從所選證書和密鑰之間的匹配中得出的。

如果您使用的是ECC,

Q = k * P

其中Q是您的公鑰,因此,當您知道私鑰k時,您還知道基點P和曲線,因此您可以“輕松地”計算公鑰。

當使用眾所周知的實現方式(指數e是固定的)時,RSA的問題也很簡單。 如果不固定,可能會很棘手,但也不會那么難。

另一個完全問題是...如何將給定的pubkey與存儲的證書匹配? 另一個問題是為什么會這樣? 您應該在簽名后保存證書信息,並在Java密鑰存儲區訪問對應於內核的證書。 模糊性始終是一個問題,特別是在加密中,您應盡可能明確。

如果我了解您的設計-您的想法不是您應該繼續做的,但是java應該支持您所需要的:

使用此代碼:

 KeyStore.PrivateKeyEntry pkEntry = (KeyStore.PrivateKeyEntry)
 ks.getEntry("privateKeyAlias", password);
 Certificate certificateFromPrivateKey = pkEntry.getCertificate();
 KeyStore.TrustedCertificateEntry certEntry = (KeyStore.TrustedCertificateEntry)ks.getEntry("certificateAlias, password);
 Certificate certificateFromPublicKey = certEntry.getCertificate();

 if (certificateFromPrivateKey.equals(certificateFromPublicKey)) ...

javadoc中閱讀有關它的更多信息-但我真的認為您正在以錯誤的方式進行操作。

另外-一個相關的API(我假設您正在使用它) -http://docs.oracle.com/javase/6/docs/api/java/security/Signature.html

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM