我寫一個算法的實現了使用RSA加密和AES加密的公鑰和私鑰加密。在這種方法中,AES密鑰應該使用RSA CipherInputStream進行解密。的Java cipherinputstream關閉所有輸入數據爲0
public void loadKey(File in, byte[] privateKey) throws GeneralSecurityException, IOException {
PKCS8EncodedKeySpec privateKeySpec = new PKCS8EncodedKeySpec(privateKey);
KeyFactory kf = KeyFactory.getInstance("RSA");
PrivateKey pk = kf.generatePrivate(privateKeySpec);
rsacipher.init(Cipher.DECRYPT_MODE, pk);
aesKey = new byte[128/8];
FileInputStream fis = new FileInputStream(in);
CipherInputStream input = new CipherInputStream(fis, rsacipher);
input.read(aesKey);
aesKeySpec = new SecretKeySpec(aesKey, "AES");
input.close();
fis.close();
}
FileInputStream中給我的編碼密鑰(這是沒有問題的),但是當通過CipherInputStream過去了,數據變爲全零。
aesKey和aesKeySpec是靜態變量,專用密鑰是一個有效的RSA密鑰。
任何幫助發現問題將不勝感激!
@CyberneticTwerkGuruOrc尋找'input.read(aesKey);'。雖然這不是讀取輸入流的方式,當然... –