簡體   English   中英

RSA算法PKCS#1.5填充(非OEAP)密碼加密,帶有Java中的客戶端證書公共密鑰

[英]RSA algorithm PKCS #1.5 padding (not OEAP) password encryption with client certificate public key in Java

我是Java的RSA算法和加密技術的新手。 我有第三方組織提供的.cer格式的客戶證書。 現在,我需要使用Java中的RSA算法和PKCS#1.5填充(而不是OAEP),使用密碼密鑰證書的公共部分來加密密碼。

您能否檢查以下各項是否能夠執行上述操作?

Security.addProvider(neworg.bouncycastle.jce.provider.BouncyCastleProvider());
byte[] input = "Abc123".getBytes();
Cipher cipher = Cipher.getInstance("RSA/None/PKCS1Padding", "BC");
FileInputStream fin = new FileInputStream(new File("/test.cer"));
CertificateFactory f = CertificateFactory.getInstance("X.509");
X509Certificate certificate = (X509Certificate)f.generateCertificate(fin);
PublicKey pk = certificate.getPublicKey();
cipher.init(Cipher.ENCRYPT_MODE, pk, new SecureRandom());
byte[] cipherText = cipher.doFinal(input);

是的,您提供的代碼看起來不錯。

請注意,如果將"RSA/None/PKCS1Padding"替換為"RSA/ECB/PKCS1Padding" ,則可以依靠默認的Sun提供程序。


重要的是要注意,您的代碼會生成“普通”簽名。 它不包含您的數據或證書。 通常,最好創建CMS簽名數據結構,例如,該結構可以包含用於創建簽名的“葉”證書。

CMS是一種所謂的密碼容器格式 ,可以保存諸如數據,簽名以及有關簽名算法,證書,簽名者等附加信息的結構。

暫無
暫無

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

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