[英]Java RSA encryption fails
我編寫了這樣的代碼,該代碼應帶有3個參數,一個是帶有公鑰的文件,第二個是要加密的文件,第三個是要保存加密文本的文件。 但是,它無法正常工作,我添加了println只是為了查看失敗之處:
public class cipher {
public static void main (String[] args) throws GeneralSecurityException{
try {
FileInputStream keyfis = new FileInputStream(args[0]);
byte[] encKey = new byte[keyfis.available()];
System.out.println(encKey);
keyfis.read(encKey);
System.out.println(encKey);
System.out.println("1");
X509EncodedKeySpec keySpec = new X509EncodedKeySpec(encKey);
System.out.println(keySpec);
KeyFactory kf = KeyFactory.getInstance("RSA");
System.out.println("2");
PublicKey pubKey = kf.generatePublic(keySpec);
System.out.println("3r");
Cipher cipher = Cipher.getInstance("RSA");
cipher.init(Cipher.ENCRYPT_MODE,pubKey);
System.out.println("4");
}
catch(Exception e)
{}
}
}
調用程序后,我有這樣的輸出:
[B@938b4a
[B@938b4a
1
java.security.spec.X509EncodedKeySpec@182d86
2
感謝幫助!
輸出以@938b4a
結尾的前3個print語句僅顯示該對象存在,並且該對象未實現toString()
。 字節數組應使用十六進制打印出來。
之后,您將generatePublic
,但失敗。 這意味着您的公共密鑰-應該是DER編碼的SubjectPublicKeyInfo
結構-無法解析。
在不知道您遇到什么錯誤的情況下,看起來這可能是您正在尋找的答案。
當您應該使用PKCS8EncodedKeySpec
時,似乎您正在嘗試使用X509EncodedKeySpec
編碼私鑰。
然后,將使用X509EncodedKeySpec
對公共密鑰進行編碼。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.